更新视图角度的值
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
?
我用你的想法更新了;)但仍然没有更新视图:(以上是关于更新视图角度的值的主要内容,如果未能解决你的问题,请参考以下文章