如何将对象设置为Angular $ resource返回的更新值?

时间:2015-06-10 14:30:00

标签: angularjs rest

如何将对象保存到$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

1 个答案:

答案 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) {});