2016-09-28 61 views
1

我完全不希望在我的應用程序中添加基於組件名稱的標籤名稱。我討厭這樣做:角度元件標籤名稱格

<hero-detail hero="ctrl.hero"></hero-detail> 

是不是可以使用普通的div標籤呢?像這樣?

<div id="hero-detail" data-hero="ctrl.hero"></div> 

爲什麼不工作?

回答

1

你的答案就在這裏https://docs.angularjs.org/guide/directive

他們說:

指令類型$編譯可以根據元素名稱, 屬性,類名,以及意見一致的指令。

所有Angular提供的指令都匹配屬性名稱,標記名稱,註釋或類名稱 。下面演示了一個 模板內的 指令(在這種情況下MYDIR)可以從被引用的各種方式:

<my-dir></my-dir> 
    <span my-dir="exp"></span> 
    <!-- directive: my-dir exp --> 
    <span class="my-dir: exp;"></span> 

最佳實踐:使用通過標籤名稱指令身高和超過註釋屬性 和類名稱。這樣做通常可以更容易地確定給定元素匹配的指令。

最佳實踐:註釋指令通常用於DOM API限制創建跨越多個元素(例如內部元素)的指令的能力的地方。 AngularJS 1.2 引入了ng-repeat-start和ng-repeat-end作爲 這個問題的更好的解決方案。鼓勵開發人員在可能的情況下使用此自定義 註釋指令。

+0

我不是在談論有關組件的指令:https://docs.angularjs.org/guide/component – chitzui

+0

這是相同的方法,因爲組件是指令 – DMCISSOKHO

+0

@DMCISSOKHO:有與此有關的差異。請參閱https://docs.angularjs.org/guide/component。 '限制'是在指令上,但沒有在組件上(僅限於元件) – DeepSpace101

2

爲什麼不,這也是可能的。基本上有三種方式我們可以指定指令。 即ElementAttributeClassname

但同時創建該指令可以指定

restriction : AE 

或世襲的需要,

,那麼你可以使用這樣

<div id="hero-detail" hero-detail data-hero="ctrl.hero"></div> 

更多深入瞭解文檔。 directives

2

You can technically將組件限制爲某個屬性,因爲組件是一種特殊的指令。 (我修改了谷歌上發現的一個隨機小提琴)

編輯:這對舊版本1.5版本可以工作,但不適用於新版本。所以請繼續閱讀...

但是,正式you cannot,你不應該這樣做。如果你選擇一個組件架構,你必須遵守規則,否則事情將很快失控。

將組件作爲html元素是很乾淨和很好的做法。你應該學會喜歡它。

+0

如何發明TAG名稱符合W3C標準? – chitzui

+0

@chitzui當然符合https://www.w3.org/TR/2016/WD-custom-elements-20161002/#custom-elements,它是webcomponents的基礎。 – gyc

+0

好吧,它是WD,但是謝謝,你可能是對的,我必須改變我的觀點。謝謝 :) – chitzui