Angularjs 中的 'IsolateScope' 默认使用 $watch 吗?
Is 'IsolateScope' in Angularjs using $watch by default?
我不明白为什么或为什么不 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???
});
}
};
});
独立作用域和$watch
不一样。使用像
这样的隔离范围
scope: {
myAttr: '='
}
告诉 $compile
绑定到 my-attr=""
属性。这意味着如果您更改 指令 中的值,它也会在父作用域中更新。
另一方面,如果该值发生变化,使用 $watch
会触发一个函数。
如果你HTML这样
<div foo-directive readonly="question.readonly">
发生以下情况:指令中的 scope.readonly
获取 question.readonly
的值(来自隔离范围之外)。每当 question.readonly
的值发生变化时,scope.readonly
的值也会随之变化。您无需为此做任何事情。
但是,如果您想在 scope.readonly
发生变化时额外执行一些操作,例如在不再只读时更改元素的颜色,则您需要自己的观察者 (scope.$watch
)。
我不明白为什么或为什么不 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???
});
}
};
});
独立作用域和$watch
不一样。使用像
scope: {
myAttr: '='
}
告诉 $compile
绑定到 my-attr=""
属性。这意味着如果您更改 指令 中的值,它也会在父作用域中更新。
另一方面,如果该值发生变化,使用 $watch
会触发一个函数。
如果你HTML这样
<div foo-directive readonly="question.readonly">
发生以下情况:指令中的 scope.readonly
获取 question.readonly
的值(来自隔离范围之外)。每当 question.readonly
的值发生变化时,scope.readonly
的值也会随之变化。您无需为此做任何事情。
但是,如果您想在 scope.readonly
发生变化时额外执行一些操作,例如在不再只读时更改元素的颜色,则您需要自己的观察者 (scope.$watch
)。