2013-09-25 5 views
0

Я использую 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>, который был добавлен Сидр и когда?

+0

Было бы полезно посмотреть ваш код. Я сделал что-то похожее на это для директивы overlay в моем проекте с использованием мода Boostrap. Я вручную переместил элементы в функции пост-ссылки директивы, чтобы они уже были скомпилированы. Можете ли вы отложить копирование до тех пор, пока функция post link не будет выполнена? –

+0

Я добавил, что мой код показывает, помогает ли это. Sidr дублирует мой «вложенный-nav», поэтому есть 2 DOM-события, но он регистрируется только один раз, так как angualr не знает о 2-м вхождении, создаваемом sidr – aditya

ответ

0

Я еще не использовал этот плагин jQuery. Но, глядя на документ, он имеет эту функцию обратного вызова:

$('#callback-menu').sidr({ 
     name: 'sidr-callback', 
     source: function(name) { 
     return '<h1>' + name + ' menu</h1><p>Yes! You can use a callback too ;)</p>'; 
     } 
    }); 

Так что я думаю, вы можете положить в свой собственный шаблон HTML в исходный обратный вызов и $compile его.

Смежные вопросы