2013-09-25 64 views
0

我正在使用sidr(http://www.berriart.com/sidr/),角度爲我的導航欄。 sidr所做的是複製我的導航欄的標記,並將其放在包裹在其自定義div中的正文之前。如何在angularjs中編譯由第三方庫添加的DOM?

現在我已經在我的導航欄上定義了一個指令,它看起來像這樣的<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

將有助於查看您的代碼。我在使用Boostrap模式的項目中爲疊加指令做了類似的操作。我手動移動了指令的後鏈接函數中的元素,以便它們已經被編譯。你可以推遲複製,直到後鏈接功能,所以編譯完成? –

+0

我已經添加了我的代碼,看看是否有幫助。 Sidr正在複製我的'nested-nav',所以它有2個DOM出現,但它只記錄一次,因爲angualr不知道由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它。

相關問題