防止`ng-include`创建隔离范围。 AngularJS

时间:2015-03-18 06:08:06

标签: javascript angularjs angularjs-directive directive angularjs-ng-include

我在HTML中的多个位置使用ng-include src指令。每个ng-include都会为自己创建一个孤立的范围,这显然给我带来了很多麻烦。

例如。

<div ng-controller="parent">
    <div ng-include src="'id1'">
    </div>
    <div ng-include src="'id2'">
    </div>
    <div ng-include src="'id2'">
    </div>
</div>

在上面提到的html中,正在创建4个范围。 1在父级定义了controller,默认情况下会在每个ng-include src创建3个。

是否可以阻止ng-include为自己创建一个孤立的范围?如果不可能,那么它有解决方法吗?

1 个答案:

答案 0 :(得分:17)

您需要创建一个自己的指令,可以加载指定的模板而不需要隔离范围。

<强> HTML

<div ng-controller="parent">
    <div my-directive template-path="id1">
    </div>
    <div my-directive template-path="id2">
    </div>
    <div my-directive template-path="id2">
    </div>
</div>

<强>指令

.directive('myDirective', function() {
  return {
      restrict: 'AE',
      templateUrl: function(ele, attrs) {
          return attrs.templatePath;
      }
  };
});

Working Plunkr