所以我在index.html下面:
<div ng-controller="UsersController">
<div ng-include='"assets/users/partials/template.html"'></div>
<a ng-click="get_data()">Get</a>
</div>
Template.html:
<input type="text" ng-model="SearchUser" name="SearchUser" />
我的控制器:
app.controller('UsersController', ['$scope', function($scope) {
$scope.get_data = function(){ console.log($scope.SearchUser); };
}
]);
因此,在上面的单击锚点的情况下,我在$scope.SearchUser
范围值中未定义。
但是,如果我从模板中取出输入并放入主HTML,它就可以工作。
我检查过多个控制器声明和其他内容,但没有任何对我有用。
我使用的是角度1.2.25版本。
答案 0 :(得分:6)
ng-include定义了自己的范围,它继承自控制器范围。因此,SearchUser已设置,但作为子范围的属性。
与往常一样,解决方案是在ng模型中有一个点,并在控制器范围内定义外部对象:
$scope.state = {};
,在HTML中:
<input type="text" ng-model="state.SearchUser" name="SearchUser" />
这样,angular将从子范围获取state字段。由于子范围原型扩展了控制器范围,因此它将在控制器范围内找到它,并且它将写入状态对象的SearchUser属性。