采取以下指令:
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 is not a function
我错过了一些非常愚蠢的东西吗?我有一个观察者($watch
)正在观看更全面的对象isWatchObject
,这很好。
我可以简单地将isEnabled
添加到范围并对其进行双向绑定,但$observe
在这里会更好。
我经常使用$watch
,但不是$observe
- 所以我必须遗漏一些东西......
为什么会出现错误?
答案 0 :(得分:2)
$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);
});
}