我正在使用来自AngularJS实现ScrollSpy (原文在这里)的代码,但是在动态创建导航时遇到了问题,但是当导航是静态创建的时候,它确实工作。
因此,我有一个scrollSpy指令,它监视一个spies列表。spies列表基本上是用户滚动页面时应该突出显示的导航元素的列表。spies是通过addSpy方法在scrollSpy控制器中添加的,如下所示
controller: function ($scope) {
$scope.spies = [];
return this.addSpy = function (spyObj) {
return $scope.spies.push(spyObj);
};
},addSpy函数总是会被调用,但是当我动态地添加间谍时,这个列表的$watch永远不会被触发,当导航项被静态创建时,它就会被触发。
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,但是它说它已经进入了一个消化周期。
发布于 2015-07-17 13:11:20
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,因为您不是要更改引用,而是更新它。
https://stackoverflow.com/questions/31476598
复制相似问题