Angularjs值不更新

ric*_*rds 3 html angularjs

我知道有类似的问题已经被问到,但它们并不适用于我的情况.我在控制器中定义了一些变量,并在面板中显示它们的值.我的控制器与部件相关如下:

var vm = this;
vm.wellId = "id";
vm.wellSeq = "sequence";
vm.onWellSelected = onWellSelected;
...
function onWellSelected(wells) {
    ...
    vm.wellId = wells[0]["id"];
    vm.wellSeq = wells[0]["sequence"];
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的html组件是这样的:

<div plate id="plate-layout"
    on-well-selected="vm.onWellSelected(wells)">
</div>
<ul class="list-group" style="width: 400px; overflow: auto">
    <li class="list-group-item">{{vm.wellId}}</li>
    <li class="list-group-item">{{vm.wellSeq}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我检查了源并在函数onWellSelected中设置了断点:vm.wellId和vm.wellSeq确实在操作后更改为正确的值,但是无法显示新值.盘子的定义涉及很多其他js文件,所以这里不容易显示,但是板块本身是一个指令,有两个服务的支持.可能是什么原因?谢谢!

ric*_*rds 6

对不起,我是Angular的新手,所以花了一段时间才发现这个:

$scope.$apply();
Run Code Online (Sandbox Code Playgroud)

将其放在修改部分之后,然后在页面上更新值.

编辑:

只是一个后续:如果使用这个:$ scope.$ apply()或$ scope.$ digest(),那么我会得到这个错误:$ digest已经在进行中; 但如果我删除它,该值将不会更新.所以我在这里引用这篇文章:防止错误,现在它正常工作没有错误消息.希望这可以帮助那些面临同样问题的人.