AngularJs - 将 ng-controller 与 ng-include 一起使用

AngularJs - Using ng-controller with ng-include

这个有效:

<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>

有什么原因吗?或者这是一个错误?

login.html:

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

登录控制器:

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

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

  • ngInclude |源代码 = 字符串
  • onload(可选)= 字符串
  • 自动滚动(可选)= 字符串

...根据 ngInclude Docs

编辑:

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

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

我不确定 "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 是什么版本? 您的应用程序是如何定义的,控制器是如何在应用程序中注册的? "loggedIn" 在哪里定义的?