保存后AngularJS数据不一致

时间:2014-07-02 21:42:25

标签: javascript angularjs

我有一个用户个人资料表单,用户可以在其中更改名称并上传个人资料照片。在他们保存数据后,他们将被带回主页,他们的个人资料信息显示在侧栏中。

问题有时候是在完成后端处理更新用户资源的POST请求之前填充用户资源的GET请求。这个问题有什么好的解决方案吗?

相关的控制器代码:

$scope.user.$save();
$location.path('/');

1 个答案:

答案 0 :(得分:1)

来自Angular docs:

  

可以使用以下参数调用类对象或实例对象上的操作方法:

     

HTTP GET" class" actions:Resource.action([parameters],[success],[error])

     

非GET" class" actions:Resource.action([parameters],postData,[success],[error])

     

非GET实例操作:实例。$ action([参数],[成功],[错误])

     

使用(value,responseHeaders)参数调用成功回调。使用(httpResponse)参数调用错误回调。

所以你必须这样做:

$scope.user.$save({}, function(data,headers) {
    //success
    $location.path('/');
}, function(response) {
    //error       
    alert("error")         
});

$scope.user.$save({}, {}, function(data,headers) {
    //success
    $location.path('/');
}, function(response) {
    //error       
    alert("error")         
});

我不确定哪些被归类为"集体诉讼" - 我认为用户是一个实例,但我不是正面的。

如果您想更新侧边栏中的信息,可以广播帖子已完成:

$rootScope.$broadcast('user:saved')

并在侧栏中执行您需要的任何逻辑

//in your sidebar controller or wherever
$scope.$on('user:saved', function() {

});