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在您的modal
modalDeleteUserController


注意:请记住更新模板绑定以添加此
。数据
前缀。

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
    });