如何将对象保存到$resource
,然后将对象设置为$resource
返回的API响应值?
我有一个对象value
(它是我正在迭代的对象数组的一部分),我保存到ReST API。
当保存成功时,API会响应相同的对象,以及任何额外的细节,例如对象的id(如果保存是创建),或者可能是后端保存到的文件路径。前端无法知道的东西,直到后端添加它。
我想使用value
中返回的额外详细信息更新已保存的response
对象,但我无法弄清楚如何操作。
我已尝试从$resource
回调中返回响应,但我无法使其正常工作。它返回一个$$state
对象(我不知道该怎么做)而不是响应。我可能做错了。
在任何情况下,我宁愿将value
对象设置为成功回调中的response
对象,因为我只想在保存成功时将对象设置为响应,而不是在& #39;是一个错误。
但我不知道如何将value
对象传递给要更新的回调,这是我问题的症结所在。
(而且我无法弄清楚如何从回调中搜索数组中的对象,因为$resource
成功响应并不包含$$hashkey
。只有错误响应包括$$hashkey
。无论如何,这种方法对我来说似乎是个蠢货。)
这是我尝试使用的基本模式。我希望有人会指出这个模式的缺陷,或者告诉我如何将value
传递给回调,或者其他什么。理想情况下,我想知道将对象保存到$资源并使用响应数据立即更新它们的最佳实践模式。
(Resource
是我在这个例子中给一个返回$ resource对象的Angular工厂的名字。)
function success(response) {
//I want to set value to response here, but value is out of scope
//so instead I do this but it returns $$state rather than response
return response;
}
function error(response) {
Status.reportError(response);
}
value = Resource.create(value)
.$promise.then(success, error);
我想我可以在回调的value
中找到$scope
(?)但是我试图避免使用$scope
因为其待处理的弃用。
提前致谢
Jay Dee
答案 0 :(得分:1)
应该是这样的:
Resource.create(value, function(success) {
value.id = success.id;//depends on what you return, may be success.data.id or similar
}, function(error) {});