Angular JS范围不从包含的模板更新

Nir*_*han 2 angularjs angularjs-scope angular-template

所以我在index.html下面:

<div ng-controller="UsersController">
<div ng-include='"assets/users/partials/template.html"'></div>
<a ng-click="get_data()">Get</a>
</div>
Run Code Online (Sandbox Code Playgroud)

Template.html:

<input type="text" ng-model="SearchUser" name="SearchUser" />
Run Code Online (Sandbox Code Playgroud)

我的控制器:

app.controller('UsersController', ['$scope', function($scope) {
    $scope.get_data = function(){ console.log($scope.SearchUser); };
}
]);
Run Code Online (Sandbox Code Playgroud)

所以在单击锚点的上述情况下,我在$scope.SearchUser范围值中未定义.但是,如果我从模板中取出输入并放入主HTML,它就可以工作.

我检查了多个控制器声明和其他东西,但没有任何对我有用.

我使用角1.2.25版本.

JB *_*zet 6

ng-include定义了自己的范围,它继承自控制器范围.因此,SearchUser已设置,但作为子范围的属性.

与往常一样,解决方案是在ng模型中有一个点,并在控制器范围内定义外部对象:

$scope.state = {};
Run Code Online (Sandbox Code Playgroud)

并且,在HTML中:

<input type="text" ng-model="state.SearchUser" name="SearchUser" />
Run Code Online (Sandbox Code Playgroud)

这样,angular将从子范围获取state字段.由于子范围原型扩展了控制器范围,因此它将在控制器范围内找到它,并且它将编写状态对象的SearchUser属性.