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

标签 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>

模板.html:

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

我的 Controller :

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

所以在上述情况下,在点击 anchor 时,我在 $scope.SearchUser 范围值中得到了未定义。 但是,如果我将该输入从模板中取出并放入主 HTML 中,它就可以工作。

我检查了多个 Controller 声明和其他内容,但没有任何效果。

我使用的是 angular 1.2.25 版本。

最佳答案

ng-include 定义了它自己的作用域,它继承自 Controller 作用域。所以 SearchUser 已设置,但作为子范围的属性。

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

$scope.state = {};

并且,在 HTML 中:

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

这样,angular 将从子作用域中获取状态字段。由于子作用域原型(prototype)扩展了 Controller 作用域,因此它将在 Controller 作用域中找到它,并将写入状态对象的 SearchUser 属性。

关于angularjs - Angular JS 范围不从包含的模板更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147554/

相关文章:

angularjs - 如何从 Controller 引用表单

angularjs - 如何在 AngularJS 中连接相邻的隔离范围

angular - 如何在 Angular 6 中选择原生元素的 ContentChild?

angularjs - Angular 动态 templateUrl

javascript - Angular 7 迭代表

javascript - AngularJS 从按钮单击中选择选项卡

javascript - AngularJS 仅字符指令

angularjs - 如何在 Angular JS 中向 ng-dialog 添加标题、消息、按钮,就像我们在 JQuery 提示符中所做的那样

javascript - 根据从下拉列表中选择的值过滤列表不起作用

javascript - 将鼠标悬停在一个元素上并将 Class 添加到 Angularjs 中的其他元素