使用带有ng-include的不同ng-controller

时间:2014-03-04 22:22:44

标签: javascript angularjs

当我使用ng-include时,我无法通过在include中设置ng-controller来更改使用的控制器。控制器没有被包括“看到”。如果我在调用div include中定义控制器,它就可以工作。

示例:

我有一个包括:

<div ng-controller="baseController">
  <div ng-include="other.html"></div>
</div>

将other.html定义为:

<div ng-controller="subController">
  <ul>
    <li ng-repeat="address in addresses">
      {{ address.name }}
    </li>
  </ul>
</div>

在此版本中,地址不会显示任何地址,但如果我将代码更改为:

 <div ng-controller="baseController" ng-controller="subController">
    <div ng-include="other.html"></div>
 </div>

将other.html定义为:

<div >
  <ul>
    <li ng-repeat="address in addresses">
      {{ address.name }}
    </li>
  </ul>
</div>

一切正常,地址也会显示出来。

为什么?

此致

Jaap van der Kreeft

2 个答案:

答案 0 :(得分:3)

请找到plunkr

<div ng-controller="baseController">
  <div ng-include src="'other.html'"></div>
</div>

如果将src作为字符串传递,则需要内部引号。您通常会为永远不会更改的文件执行此操作。当您可能需要更改文件时,最好将值设置为Angular变量并在标记中引用该值。

EX:

<div ng-include src="templatePath"></div>

&安培;脚本代码是

 $scope.templatePath = "other.html";

答案 1 :(得分:0)

试试这个:

<div ng-controller="baseController">
  <div ng-include="'other.html'"></div>
</div>