我不明白为什么或为什么不使用angularjs范围使用或不使用$ watch?
例如:
app.directive('fooDirective', function () {
return {
scope: {
readonly: '=' or '@' or '&'
},
link: function (scope, element, attrs) {
// should I use $watch here or not ?
scope.$watch('readonly', function () {
// do I require to do so???
});
}
};
});
答案 0 :(得分:0)
隔离范围和$watch
不一样。使用像
scope: {
myAttr: '='
}
告诉$compile
绑定到my-attr=""
属性。这意味着如果您更改指令中的值,它也会在父作用域中更新。
另一方面,如果该值发生变化,使用$watch
会触发一个函数。
答案 1 :(得分:0)
如果你有像这样的HTML
<div foo-directive readonly="question.readonly">
发生以下情况:指令中的scope.readonly
获取question.readonly
的值(来自隔离范围之外)。每当question.readonly
的值发生变化时,scope.readonly
的值都会相应更改。你无事可做。
但是如果你想在scope.readonly
更改时另外做一些事情,比如当元素不再是只读时更改元素的颜色,那么你需要自己的观察者(scope.$watch
)。