Javascript 如何在AngularJS的模式引导之外更新$scope?
我有Javascript 如何在AngularJS的模式引导之外更新$scope?,javascript,angularjs,modal-dialog,angularjs-scope,Javascript,Angularjs,Modal Dialog,Angularjs Scope,我有$scope.users,其中显示了一些项目 当我单击其中一个项目时,会出现一个模式来确认删除。 要删除的查询非常有效,但我的$scope.users不会在视图中更新。。。 我认为这是因为$scope.users不是同一个控制器 更新范围的解决方案是什么?(不使用$rootscope) 尝试: 说明: modalDeleteUserController中的$scope是backController作用域的子作用域。分配$scope.users=数据时,它在子作用域上创建新属性,而不更新父作用
$scope.users
,其中显示了一些项目
当我单击其中一个项目时,会出现一个模式来确认删除。
要删除的查询非常有效,但我的$scope.users
不会在视图中更新。。。
我认为这是因为$scope.users
不是同一个控制器
更新范围的解决方案是什么?(不使用$rootscope)
尝试:
说明:
modalDeleteUserController
中的$scope是backController
作用域的子作用域。分配$scope.users=数据时代码>,它在子作用域上创建新属性,而不更新父作用域。当前解决方案从继承的属性中清除数据并向其中添加新数据,以便更新父范围
发件人:
范围-用于模态内容的范围实例(实际上是
$modal服务将创建所提供的
范围)。默认为$rootScope
另一种解决方案是声明要挂起数据的属性:
app.controller('backController', ['$scope', '$http', '$rootScope','MyFunctions', '$location', '$modal',
function ($scope, $http, $rootScope, MyFunctions, $location, $modal) {
$scope.data = {};//declare a property
MyFunctions.getUsers().then(function (data) {
$scope.data.users = data; //store users as a property of this property
});
然后您可以使用$scope.data.users=data代码>在您的modalmodalDeleteUserController
注意:请记住更新模板绑定以添加此。数据前缀。lol,OMG!这是为什么?回答得很好,但我不明白为什么。你能解释一下吗?非常感谢。尼古拉斯的答案似乎是一样的,但不起作用。我不明白为什么。@Steffi:不,问题与$apply无关$angular已调用apply,再次调用它可能会引发异常。主要问题是它在子作用域上创建了一个新属性,而没有更新父作用域
我认为Khanh TOs的回答是正确的。我的错了。我将删除我的,因为它不起作用。@Steffi:请注意,我的答案中的apply
与$scope.$apply
不同。
MyFunctions.getUsers().then(function (data) {
$scope.users.length = 0; //empty the current array
$scope.users.push.apply($scope.users,data); //push the data array to current array.
});
app.controller('backController', ['$scope', '$http', '$rootScope','MyFunctions', '$location', '$modal',
function ($scope, $http, $rootScope, MyFunctions, $location, $modal) {
$scope.data = {};//declare a property
MyFunctions.getUsers().then(function (data) {
$scope.data.users = data; //store users as a property of this property
});