2015-10-07 54 views
1

我使用這個庫https://github.com/tchatel/angular-treeRepeat這個自定義標籤是如何配置的?

所以創建節點列表使用此語法:

<li frang-tree-repeat="node in treeData> 

frang-tree-repeat是一個自定義標籤,所以它必須要在庫中的某處配置?

搜索https://github.com/tchatel/angular-treeRepeat的src我沒有看到任何對frang-tree-repeat的引用,因此如何配置此標記或換句話說,如何解析frang-tree-repeat?

+1

它在這裏https://github.com/tchatel/angular-treeRepeat/blob/master/app/js/directives.js#L18請記住規範化指令名稱:frangTreeRepeat。 – dfsq

+0

@dfsq所以指令frangTreeRepeat在角度視圖頁面上被讀爲frang-Tree-Repeat?這是插入' - '從視圖頁讀取指令的一個angularjs標準? –

+0

閱讀我的答案,我解釋了爲什麼這種規範化是必要的。 – dfsq

回答

1

Angular規範化從kebab-case到camelCase的指令(包括屬性和標籤)名稱。這是必要的,因爲HTML標籤和屬性的名稱最好用kebab格式編寫(因爲名稱在HTML中不區分大小寫),而在Javascript中,kebab格式名稱不會是有效的標識符,並且不能用於指令名稱(好吧,他們可能,但它需要額外的報價)。

這就是爲什麼您必須執行從HTML表示法到JS的標準化。 Angular已經爲此使用了$normalize服務。所以這意味着,如果在HTML中有frang-tree-repeat,它將被翻譯成使用Javascript中的frangTreeRepeat

在你的情況,你的指令在這裏找到:https://github.com/tchatel/angular-treeRepeat/blob/master/app/js/directives.js#L18

0

frang-tree-repeat是一個自定義directive其在模塊app.directives定義在角treeRepeat。正如@dfsq指出的那樣,它的實現可以在here找到。

注意,它需要frangtree在其定義require: ^frangTree

指令使用此選項,除非指定控制器發現$compile將拋出一個錯誤。該^前綴意味着這個指令搜索其父母控制器(不^前綴,則指令將查找控制器只是自己的元素)。