1

这有效:

<div ng-include="'login.html'" flex ng-if="!loggedIn" ng-controller="LoginController"></div>

但是,这不会(不{{test}}输出任何内容):

<ng-include src="'login.html'" flex ng-if="!loggedIn" ng-controller="LoginController"></ng-include>

有什么理由吗?或者它是一个错误?

登录.html:

<p>{{test}}</p>

登录控制器:

function LoginController($scope){
    $scope.test = 'login';
}
4

2 回答 2

1

我不确定“loggedIn”是在哪里定义的,但是当我在父控制器上定义它时,两种语法都按预期工作。

Plunkr

<div ng-controller="PrntCtrl">
      <div ng-include="'test.html'" flex ng-if="!loggedIn" ng-controller="TestCtrl"></div>
      <ng-include src="'test.html'" flex ng-if="!loggedIn" ng-controller="TestCtrl"></ng-include>
    </div>

需要考虑的一些问题:您使用的是哪个版本的 Angular?您的应用程序是如何定义的,控制器是如何向应用程序注册的?“登录”在哪里定义?

于 2016-05-10T03:44:22.937 回答
0

因为这个指令只接受 3 个参数:

  • ng包括 | src = 字符串
  • onload(可选)=字符串
  • 自动滚动(可选)= 字符串

...根据ngInclude Docs

编辑:

你可以解决简单地将它包装在另一个元素中......

<div ng-if="!loggedIn" ng-controller="LoginController">
  <div ng-include="'login.html'" flex></div>
</div> 
于 2016-05-10T02:09:32.830 回答