我有一个非隔离范围指令。我不想孤立它,因为它需要与其他指令的元素。然而,我需要在范围上观看一件物品。所以我试过这个:
scope.$watch(function() {
return scope.$apply(attrs.myAttribute);
}, function(val) {
return val ? doSomething():doSomethingElse();
});
这不起作用,因为角度抛出一个摘要循环已经在进行中的错误。所以我的问题是,我怎样才能动态观察范围内的项目与非隔离指令。
感谢,
对不起,但我不相信这个作品。如何调用'scope。$ watch(attrs',如果范围内没有任何东西?你不能仅仅看这种风格的属性,而且OP不需要隔离范围 - 所以在指令级定义一个范围定义如果我解释这个答案,你可以编写一个这样的小工作演示吗?[这是一个JSFiddle](https://jsfiddle.net/rqej2b4j/)。你可以使这个功能? – scniro
@scniro在我的项目指令是在控制器的范围内,所以我需要指令来监视已经在范围中定义的东西,但是动态地这样做,例如,如果控制器定义了scope.foo,我需要我的元素像所以每当foo改变我的指令都可以采取相应的行动,我肯定也会得到你的答案,但我不希望属性被解释为一个字符串。 –
user3828000
但是'myAttr =“foo”'不会从指令内部被监视 - 它仅仅是一个属性,并且没有任何限制。你如何把它放在范围上? @ user3828000。 ''范围。$ watch(attrs.myAttr,''总是会产生'undefined',所以在上面的例子中,我会怀疑doSomethingElse()总是会激发 – scniro