gpt4 book ai didi

javascript - 在 $watch 中使用 $apply

转载 作者:行者123 更新时间:2023-11-28 18:57:57 24 4
gpt4 key购买 nike

我有一个非隔离范围指令。我不想隔离它,因为它需要位于具有其他指令的元素上。但我需要在范围内观看一个项目。所以我尝试了这个:

scope.$watch(function() {
return scope.$apply(attrs.myAttribute);
}, function(val) {
return val ? doSomething():doSomethingElse();
});

这不起作用,因为 Angular 会抛出摘要循环已在进行中的错误。所以我的问题是,如何使用非隔离指令动态观察范围内的项目。

谢谢

最佳答案

不完全确定您在观看该项目时遇到的困难是什么(如果它已经在范围内)。您能详细说明一下吗?无论如何,这里有两个解决方案应该涵盖几乎所有情况。要观察属性变化,请观察以下内容...

scope.$watch(function() {
return elem.attr('my-attribute');
}, function(n, o) {
if(n)
console.log(n);
});

JSFiddle Link - 观看属性演示

<小时/>

但是,我怀疑您很难将该项目纳入范围。如果是这样,这里有一种通过 $observe 分配它的方法,然后从那里观察它而无需隔离...

attrs.$observe('myAttribute', function(value) {
scope.myValue = value;
});

scope.$watch('myValue', function(n, o) {
if(n)
console.log(n);
});

JSFiddle Link - 通过 $observe

观看属性演示

关于javascript - 在 $watch 中使用 $apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33243644/

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