Javascript 防止“ng include”创建隔离作用域。安格拉斯

Javascript 防止“ng include”创建隔离作用域。安格拉斯,javascript,angularjs,angularjs-directive,directive,angularjs-ng-include,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=

我在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为自己创建一个独立的作用域?如果不可能,那么是否有解决方法?

您需要创建一个自己的指令,该指令可以在没有隔离作用域的情况下加载指定的模板

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>

只需创建自己的指令并通过它加载模板,而无需声明隔离scope@pankajparkar怎么用?您是否有任何关于如何实现的示例?ng include不会创建一个孤立的作用域-它会创建一个与父作用域不孤立的子作用域。在你用一个新的指令重新发明轮子之前,我很想知道是什么样的麻烦造成的。创建子作用域是有原因的-它可以防止模板相互干扰。@JoeEnzminger
ng model
在那些模板中使用的,由“ng include src”加载的,在父控制器中没有更新。这是Angular中的经典“点表示法”问题。应该能为解决你的问题提供更好的方法。它也可以通过使用“ControllerAs”语法来解决。它不会返回任何内容。@adityaponk她看到我的更新答案,添加了
restrict:'AE'
属性支持来指导它的工作!谢谢你,伙计。我最终在指令中给出了templateurl的硬编码路径,但它解决了范围问题+1用于解决方案。不,您不应该硬编码它,那么它将不会用作可重用组件。是的,但是当我使用
函数(ele,attrs){return attrs.templatePath;}
当前正在修复它时,出现了一些错误。
.directive('myDirective', function() {
  return {
      restrict: 'AE',
      templateUrl: function(ele, attrs) {
          return attrs.templatePath;
      }
  };
});