我有一个用户个人资料表单,用户可以在其中更改名称并上传个人资料照片。在他们保存数据后,他们将被带回主页,他们的个人资料信息显示在侧栏中。
问题有时候是在完成后端处理更新用户资源的POST请求之前填充用户资源的GET请求。这个问题有什么好的解决方案吗?
相关的控制器代码:
$scope.user.$save();
$location.path('/');
答案 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() {
});