-1

我不明白为什么或为什么不使用 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???
           });
        }
    };
});
4

2 回答 2

0

和孤立的作用域$watch是不一样的。使用孤立的范围,如

scope: {
    myAttr: '='
}

告诉$compile绑定到my-attr=""属性。这意味着如果您更改指令中的值,它也会在父范围中更新。

另一方面,$watch如果该值发生变化, using 会触发一个函数。

于 2015-02-23T14:44:52.783 回答
0

如果你有这样的 HTML

<div foo-directive readonly="question.readonly">

发生以下情况:scope.readonly在您的指令中获取question.readonly(从隔离范围之外)的值。每当值发生question.readonly变化时,值scope.readonly也会相应变化。你无事可做。

但是如果你想在变化时做一些额外的事情scope.readonly,比如在元素不再是只读的时候改变它的颜色,你需要你自己的观察者(scope.$watch)。

于 2015-02-23T20:19:40.883 回答