我正在使用来自ScrollSpy 的 AngularJS 实现的代码(此处为原始文章),但在动态创建导航时遇到了问题,但在静态创建导航时它确实有效。
所以我有一个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
它,但它说它已经在消化周期内。