2014-04-15 47 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

相关问题