2015-02-23 66 views
-1

我不明白爲什麼或爲什麼不angularjs隔離範圍使用或不$ $手錶?

例如:

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??? 
      }); 
     } 
    }; 
}); 
+1

這取決於你想要做什麼。 – zeroflagL 2015-02-23 14:29:17

+0

重要嗎?我想知道它是否爲該屬性頒發或不是?我的意思是,如果在範圍隔離之後,我會有兩塊手錶或一塊? – IamStalker 2015-02-23 14:31:35

+0

通過使用'='激活數據綁定,而'@'是隻讀的,最好是字符串 – DonJuwe 2015-02-23 14:35:11

回答

0

如果你有HTML這樣

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

將發生以下情況:scope.readonly你的指令中獲得(從隔離範圍之外)的question.readonly值。每當question.readonly的值改變時,scope.readonly的值相應地改變。你無事可做。

但是,如果您想在scope.readonly發生更改(如更改元素不再爲只讀時的顏色)時另外執行某項操作,則需要您自己的監視器(scope.$watch)。

0

隔離範圍和$watch是不一樣的。使用分離的範圍等

scope: { 
    myAttr: '=' 
} 

告訴$compile綁定到my-attr=""屬性。這意味着如果您更改指令中的值,它也會在父範圍中更新。如果該值發生變化,則使用$watch觸發函數。