Я использую sidr (http://www.berriart.com/sidr/) с угловым для моей навигационной панели. То, что делает sidr, это копирование моей разметки nav-bar и перенос ее непосредственно перед телом, завернутым в свой пользовательский div.Как скомпилировать DOM, добавленную сторонними библиотеками в angularjs?
Теперь я определил директиву на моей навигационной панели, которая выглядит примерно так: <ul filter>....</ul>
. Поскольку sidr реплицирует мою разметку навигационной панели, у меня есть 2 ul с директивой фильтра. Но функция ссылки моей директивы вызывается только один раз, потому что угловая доза не знает о другом появлении этой директивы.
Моя разметка выглядит следующим образом
<ul class="side-nav nested-nav" filter>
<li class="has-sub-menu" ng-repeat="filter in filters">
<a href="#" ng-bind="filter.label"></a>
<ul class="sub-menu" options>
<li ng-repeat="option in filter.options">
<a href="#" ng-bind="option.label"></a>
</li>
</ul>
</li>
</ul>
и я моя директива
angular.module('test')
.directive('filter', function() {
return {
link: function($scope, iElement, iAttrs) {
console.log('hello world!'):
}
}
})
Так как же я говорю угловой компилировать второй <ul filter>....</ul>
, который был добавлен Сидр и когда?
Было бы полезно посмотреть ваш код. Я сделал что-то похожее на это для директивы overlay в моем проекте с использованием мода Boostrap. Я вручную переместил элементы в функции пост-ссылки директивы, чтобы они уже были скомпилированы. Можете ли вы отложить копирование до тех пор, пока функция post link не будет выполнена? –
Я добавил, что мой код показывает, помогает ли это. Sidr дублирует мой «вложенный-nav», поэтому есть 2 DOM-события, но он регистрируется только один раз, так как angualr не знает о 2-м вхождении, создаваемом sidr – aditya