首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$watch未被解雇

$watch未被解雇
EN

Stack Overflow用户
提问于 2015-07-17 13:09:26
回答 1查看 60关注 0票数 0

我正在使用来自AngularJS实现ScrollSpy (原文在这里)的代码,但是在动态创建导航时遇到了问题,但是当导航是静态创建的时候,它确实工作。

因此,我有一个scrollSpy指令,它监视一个spies列表。spies列表基本上是用户滚动页面时应该突出显示的导航元素的列表。spies是通过addSpy方法在scrollSpy控制器中添加的,如下所示

代码语言:javascript
复制
controller: function ($scope) {
    $scope.spies = [];
    return this.addSpy = function (spyObj) {
        return $scope.spies.push(spyObj);
    };
},

addSpy函数总是会被调用,但是当我动态地添加间谍时,这个列表的$watch永远不会被触发,当导航项被静态创建时,它就会被触发。

代码语言:javascript
复制
link: function (scope, elem, attrs) {
    scope.$watch('spies', function (spies) {
        // I never get called when spies are added dynamically, even 
        // though spies are added to the $scope.spies object in the controller!
    }

有人能帮我理解为什么$watch没有被解雇吗?我试着给它添加$scope.$apply,但是它说它已经进入了一个消化周期。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-17 13:11:20

代码语言:javascript
复制
scope.$watch('spies', function (spies) {
    // I never get called when spies are added dynamically, even 
    // though spies are added to the $scope.spies object in the controller!
}, true);

您必须在最后修改,true,因为您不是要更改引用,而是更新它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31476598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档