更新视图角度的值

Posted

技术标签:

【中文标题】更新视图角度的值【英文标题】:Updating value on view angular 【发布时间】:2016-01-19 00:26:18 【问题描述】:

我有一个 Angular 表单,它提交给 API,返回 201 状态代码,以及所创建对象的 ID 和令牌。我的想法是使用该标记打开一个模式并将其显示给用户。

$scope.object.token 的值已更新,但我无法在视图中更新该状态。我试过了,$scope.$apply() 我得到了一个error $digest already in progress when calling $scope.$apply()。我也试过$timeout(),但它没有更新视图。

处理该行为的控制器是:

angular.module('myApp').controller('ObjectCtrl', ['$scope', 'user', 'object', '$routeParams', '$location', '$uibModal',
  function ($scope, user, object, $routeParams, $location, $uibModal, displayToken)  

    $scope.object = 
      user_id: user.currentUser
    

    $scope.create_object = function() 
      var promise = object.create($scope.object);
      promise.then(function(data)
      var token = data.data.token;

      var modalInstance = $uibModal.open(
        animation: $scope.animationsEnabled,
        templateUrl: '/app/views/modal_submit_token.html',
        controller: 'ObjectCtrl',
        resolve: 
          displayToken: function () 
            $scope.object.token = token;
          
        
      );
    );
  ;
]); 

在我的 html 上,

<p><b> object.token </b></p>

【问题讨论】:

【参考方案1】:

要传递参数,您需要使用解析并在控制器中注入项目

$scope.Edit = function (Id) 
   var modalInstance = $modal.open(
      templateUrl: '/app/views/admin/addeditphone.html',
      controller: 'EditCtrl',
      resolve: 
         editId: function () 
           return Id;
         
       
    );

现在如果你会这样使用:

app.controller('EditCtrl', ['$scope', '$location'
       , function ($scope, $location, editId)

在这种情况下,editId 将是未定义的。你需要注入它,像这样:

app.controller('EditCtrl', ['$scope', '$location', 'editId'
     , function ($scope, $location, editId)

现在它可以正常工作了,我多次遇到同样的问题,一旦注入,一切都开始工作了!

字体:Pass parameter to modal

【讨论】:

我在使用同一个控制器作为模态,我还需要注入它吗? 是的! modal的控制器是动态绑定 所以对于我的情况,我必须将 editId 函数体替换为 $scope.object.token = token ? 我用你的想法更新了;)但仍然没有更新视图:(

以上是关于更新视图角度的值的主要内容,如果未能解决你的问题,请参考以下文章

角度内插值未在订阅时更新

角度数组不更新视图

角度视图不更新数据

如何使用角度更新下拉列表的值?

如何仅在数据库发生更改时更新角度视图

在角度6中修改数组数据后,视图未更新