【发布时间】:2015-05-20 00:14:44
【问题描述】:
当我使用 ng-include 包含一个拥有自己的控制器的 html 模板时,我在 AngularJs 中遇到了问题。
简而言之,问题是我可以在模板本身中访问在包含模板的控制器中定义的范围变量,但不能做相反的事情(访问在其控制器内的模板中定义的模型)。
这是我包含 test.html 模板的 index.html 页面:
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="app.js"></script>
<body>
<div ng-controller="TestController" ng-include="'test.html'"></div>
</body>
</html>
这里是 test.html 模板:
<div>
{{foo}}
<br />
<input type="text" ng-model="username" />{{username}}
<br />
<button ng-click="go()">Click here</button>
</div>
最后这是我的控制器:
myApp.controller('TestController', function($scope) {
$scope.foo = 'Hello World';
$scope.go = function() {
console.log('Username = ' + $scope.username);
}
});
没有问题,我可以做到以下几点:
- 访问模板中控制器中定义的 foo
- 访问模板中定义的用户名 本身
但我不能执行以下操作
- 访问控制器模板中定义的用户名 (输出在 go() 函数中未定义)
这是plunker。
提前致谢。
【问题讨论】:
-
我已经读过这篇文章,我认为我的情况有所不同。我确实尝试使用 info.username 作为模型的名称,但它也不起作用。