采用以下指令:
appDirectives.directive('drFadeHighlight', ['$animate', '$timeout', function ($animate, $timeout) {
return {
scope: {
isWatchObject: '='
},
restrict: 'A',
link: function (scope, element, attr) {
element.addClass('dr-fade-highlight');
scope.$observe('isEnabled', function () {
console.log('i observed...');
console.log(arguments);
});
}
}
}]);
我已将其剥离,仅显示我遇到问题的部分。
当这个指令应用于一个元素时,我收到错误:
TypeError: scope.$observe 不是函数
我是不是漏掉了一些非常愚蠢的东西?我有一个观察者 ($watch
) 观察一个更全面的对象 isWatchObject
,这很好。
我可以简单地将 isEnabled
添加到作用域并对其进行双向绑定(bind),不过 $observe
在这里会好得多。
我经常使用 $watch
,虽然不是那么多 $observe
- 所以我一定是遗漏了一些东西..
知道为什么会抛出错误吗?
最佳答案
$observe
将被放置在一个属性上。查看$compile.directive.Attributes文档以获取更多信息。在你的例子中,你会做类似的事情(假设 isEnabled
是一个像 is-enabled="true"
这样的属性)...
link: function (scope, element, attr) {
attr.$observe('isEnabled', function (value) {
console.log('i observed...');
console.log(value);
});
}
关于javascript - scope.$observe 不是 AngularJS 指令中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919293/