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" 在哪里定义,但是当我在父控制器上定义它时,两种语法都按预期工作。
<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" 在哪里定义的?
这个有效:
<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" 在哪里定义,但是当我在父控制器上定义它时,两种语法都按预期工作。
<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" 在哪里定义的?