2014-02-27 73 views
1

爲什麼當我們創建一個指令時,它僅限於默認情況下的屬性。爲了創建由元素或類名稱觸發的指令,我們需要使用restrict選項?angularjs中可用的限制類型有多少種類

的限制選項通常設置爲:

  • 'A' - 僅匹配屬性名,
  • 'E' - 僅匹配元素名稱,
  • 'C' - 僅匹配的類名。

這些限制可以根據需要所有組合:

  • 「AEC」 - 匹配任一屬性或元素或類名。

只有這些限制是可用的angularjs?或者,還有其他限制嗎?

回答

7

AngularJS在默認情況下期望我們將聲明一個自定義指令作爲屬性,這意味着restrict選項設置爲A

可用選項有:

E = <new-directive></new-directive>

A = 屬性(默認) <div new-directive="expr"></div>

C = <div class="new-directive: expr;"></div>

M = 評論 <!-- directive: new-directive expr -->

當然他們可以組合使用:

{ restrict: 'EC' } // Element or class 

屬性是默認的,因爲他們真正的工作跨瀏覽器,包括老年沒有在文檔中註冊新標籤的IE。

我被告知,我建議不要使用註釋限制來聲明指令,因爲它們要跨越多個元素,但在新版本中有像ng-repeat-end等鉤子。

+0

'M = Comment'? ?? –

+0

是的。我會建議不要使用它。 – dachi

+0

哇!有趣。我正在等待任何其他限制+1 –

0

angular documentation提取:EACM的子集的

restrict
串限制指令到特定的指令,聲明風格。如果省略,則使用默認(僅限屬性)。

  • E - 元素名稱:<my-directive></my-directive>
  • A - 屬性(默認):<div my-directive="exp"></div>
  • C - 類別:<div class="my-directive: exp;"></div>
  • M - 評論:<!-- directive: my-directive exp -->