在资源调用的成功处理程序中更新值不会反映在UI中

时间:2017-02-16 13:18:06

标签: javascript angularjs angular-resource

我正在尝试在成功调用API端点后更新范围内的值。 之前我在用户点击“保存”后立即更新了这些值。但是,这不太理想,因为即使API调用由于某种原因失败,UI仍然反映了新的'值,直到刷新页面。

以下是我的控制器中的代码有效,但过早更新id':

vm.setId = function(user) {
  var _onSuccess = function() {
    alertService.success('Set ' + user.email + ' ID to ' + user.edit.id.value);
  };
  var _onError = function(err) {
    alertService.danger(err.data.message);
  };

  user.id = user.edit.id.value;

  usersService.setId({
    email: user.email,
    id: user.edit.id.value
  }, {}).$promise.then(
    _onSuccess,
    _onError
  );
};

这是我尝试使用的代码,但id在成功保存时未更新为新值:

vm.setId = function(user) {
  var _onSuccess = function() {
    user.id = user.edit.id.value;
    alertService.success('Set ' + user.email + ' ID to ' + user.edit.id.value);
  };
  var _onError = function(err) {
    alertService.danger(err.data.message);
  };

  usersService.setId({
    email: user.email,
    id: user.edit.id.value
  }, {}).$promise.then(
    _onSuccess,
    _onError
  );
};

1 个答案:

答案 0 :(得分:0)

抓住了我的问题。我在我的模板{{::user.id}}中使用单向数据绑定。将此更改回双向绑定{{user.id}},修复了我的问题。