В Angular (1.2) я распечатываю некоторые элементы li
используя ng-repeat, и я условно применяю к ним класс с ng-class
.
<li ng-repeat="(linkName, link) in navigation" ng-class="{'treeview':condition}">
<a href ng-if="link.state" ui-sref="{{link.state}}">
<i class="fa {{link.icon}}"></i>
<span>{{linkName}}</span>
</a>
</li>
treeview
классов, которое зависит от condition
представляет собой настраиваемую директиву, которую я определил:
angular.module('app.mymodule')
.directive('treeview', function() {
return {
restrict: 'C',
link: function(scope, element, attrs) {
// jquery tree plugin
element.tree();
}
};
})
Это должно включить плагин дерева jquery для элементов, имеющих класс treeview
.
Проблема состоит в том, что даже жесткие элементы правильно добавлены в dom и имеют treeview
классов, а пользовательское директивное treeview
никогда не оценивается (проверено это с точкой останова).
Вместо этого, если я делаю простой
<li class="treeview">
//...
</li>
Тогда директива работает так, как предполагалось.
Я думаю, что это какой-то конфликт в области, созданной ng-repeat.
В вашей директиве set transclude to true. Это позволяет вам оценивать вещи между пользовательскими тегами.