2015-10-07 55 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将抛出一个错误。该^前缀意味着这个指令搜索其父母控制器(不^前缀,则指令将查找控制器只是自己的元素)。