2

所以我有以下index.html:

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

模板.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 版本。

4

1 回答 1

6

ng-include 定义了自己的范围,它继承自控制器范围。所以 SearchUser 被设置,但作为子范围的一个属性。

与往常一样,解决方案是在您的 ng-model 中添加一个点,并在控制器范围内定义外部对象:

$scope.state = {};

并且,在 HTML 中:

<input type="text" ng-model="state.SearchUser" name="SearchUser" />

这样,角度将从子范围中获取状态字段。由于子作用域原型扩展了控制器作用域,它会在控制器作用域中找到它,并且会写入状态对象的 SearchUser 属性。

于 2014-10-01T17:58:56.313 回答