Как настроен этот пользовательский тег?

Я использую эту библиотеку https://github.com/tchatel/angular-treeRepeat

Таким образом, для создания списка узлов используется следующий синтаксис:

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

frang-tree-repeat такое пользовательский тег, и поэтому он должен быть настроен где-то в библиотеке?

В поиске источника https://github.com/tchatel/angular-treeRepeat я не вижу ссылок на frang-tree-repeat, так как настроен этот тег или, другими словами, как интерпретируется frang-tree-repeat?

2 ответа

Решение

Angular нормализует имена директив (как атрибутов, так и тегов) от kebab-case до camelCase. Это необходимо, так как имена тегов и атрибутов HTML лучше пишутся в kebab-case (поскольку имена не чувствительны к регистру в HTML), в то время как в Javascript имена kebab-case не будут допустимыми идентификаторами и не могут использоваться для имен директив (ну, они могли бы, но это потребовало бы дополнительной упаковки в кавычки).

Вот почему вы должны предварительно нормализовать HTML-нотацию до JS. Angular имеет сервис $normalize, который используется для этого. Так что это означает, что если в HTML у вас есть frang-tree-repeat оно будет переведено на frangTreeRepeat в JavaScript

В вашем случае ваша директива находится здесь: https://github.com/tchatel/angular-treeRepeat/blob/master/app/js/directives.js#L18

frang-tree-repeat является пользовательской директивой, которая определена в модуле app.directives в angular-treeRepeat. Как отметил @dfsq, его реализацию можно найти здесь.

Обратите внимание, что это требует frangtreeв своем определении require: ^frangTree:

Когда директива использует эту опцию, $compile выдаст ошибку, если указанный контроллер не найден. ^ префикс означает, что эта директива ищет контроллер у его родителей (без ^ префикс, директива будет искать контроллер только по своему элементу).

Другие вопросы по тегам