gpt4 book ai didi

javascript - $watch 没有被解雇

转载 作者:行者123 更新时间:2023-12-03 09:32:01 25 4
gpt4 key购买 nike

我正在使用 AngularJS implementation of ScrollSpy 中的代码( original article here )但是当我的导航是动态创建时遇到了问题,但它在静态创建导航时确实有效。

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

controller: function ($scope) {
$scope.spies = [];
return this.addSpy = function (spyObj) {
return $scope.spies.push(spyObj);
};
},

addSpy 函数总是被调用,但是当我动态添加 spy 时,该列表的 $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 但它说它已经在摘要循环内。

最佳答案

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,因为您不更改引用,只是更新它。

关于javascript - $watch 没有被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com