2014-04-15 83 views
2

動態模板部分我已經有了一個指令......像這樣:Angular.js介紹如何使用指令孤立範圍

.directive('formMenuBuilderMenu', function (formMenuService) { 
    return { 
     templateUrl: '../../views/templates/formmenubuilder-menu-template.html', 
     restrict: 'A', 
     scope:{ 
      menu:'=' 
     }, 
     link: function postLink(scope, element, attrs) { 
      // does stuff 
     } ... 

它被內置動態使用$compile只要創建一個新的菜單節點。

 scope.menu = {//new data for menu view directive part} 
     var $nodeTemplate = '<div form-menu-builder-menu menu="menu"></div>'; 
     var html = $compile($nodeTemplate)(scope); 
     $content.append(html); 

我有印象,因爲我已經定義在formMenuBuilderMenu指令,該指令將有隔離範圍,而不是一個scope部分通過創建

新情況的影響,但這並不在工作所有!

會發生什麼情況是,每次使用$ compile創建新指令時,scope.menu都會使用所創建的所有先前指令的新值進行更新,而不是保持其隔離範圍。確實在每個創建的指令中註銷scope顯示它每次都是相同的作用域實例。

我該怎麼做,以便指令範圍保持獨立,每個實例都有自己的scope?它甚至有可能嗎?請讓我知道是否需要進一步解釋。我敢肯定,我會以錯誤的方式去做這樣的事情,所以一個正確的方向指針將不勝感激。

爲了清楚起見,我的主要目標基本上是使用指令創建動態模板部件,每個指令都有自己的子集數據。

回答

1

相反的:

var html = $compile($nodeTemplate)(scope); 

試試這個:

var html = $compile($nodeTemplate)(scope.$new()); 
+0

非常感謝!正是我在找什麼。非常感激。 – markstewie

相關問題