这个自定义标签是如何配置的?

How is this custom tag configured?

我正在使用这个库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 是如何解释的?

Angular 将指令(属性和标记)名称从 kebab-case 规范化为 camelCase。这是必要的,因为 HTML 标签和属性的名称最好用 kebab-case 编写(因为名称在 HTML 中不区分大小写),而在 Javascript kebab-case 中名称将无效标识符并且不能用于指令名称(好吧,它们 可以 ,但它需要额外的包装成引号)。

这就是为什么您必须将 HTML 符号规范化为 JS 的原因。 Angular 有 $normalize 服务用于此。所以这意味着,如果在 HTML 中有 frang-tree-repeat,它将在 Javascript 中转换为 frangTreeRepeat

对于您的情况,您的指令可在此处找到:https://github.com/tchatel/angular-treeRepeat/blob/master/app/js/directives.js#L18

frang-tree-repeat 是自定义 directive which is defined in a module app.directives in angular-treeRepeat. As @dfsq pointed out, its implementation can be found here

注意它的定义需要frangtreerequire: ^frangTree:

When a directive uses this option, $compile will throw an error unless the specified controller is found. The ^ prefix means that this directive searches for the controller on its parents (without the ^ prefix, the directive would look for the controller on just its own element).