我目前正致力于使用Angular资源1.2.x实现REST API。我刚刚看到几个提示,在1.2.x版本中,角度资源破坏了一些现有的模式。我现在的问题是,如何正确处理angular-resource 1.2.x的以下场景。
我确实有一个返回数据的REST API(/ offers /:id)和一个使用angular-resource抽象这些API的角度服务。在这个服务中,我有一个get函数,它使用给定的id查询API:
_offerResource.get({offerId: id})
_offerResource本身是$ resource的一个实例。
在我的控制器中,我对视图绑定的$ scope有一个可变的报价(例如$ scope.offer.title,...)。
我尝试使用以下代码行实现对API的调用:
_tempOffer = OfferAPI.get($routeParams.offerId)
但遗憾的是绑定无效。基于此SO条目(Angularjs promise not binding to template in 1.2),角度资源的行为已发生变化。但是使用$ promise.then(...)语句的方法是什么?从工程的角度来看,这看起来非常难看,因为我需要在控制器中处理这个问题,而不是服务返回给我一个我可以使用的对象。
这个有效,但如上所述,从SW设计的角度来看,这不是我最喜欢的方法:
_tempOffer = OfferAPI.get($routeParams.offerId)
_tempOffer.$promise.then((response) ->
$scope.offer = Offer.initializeFromJSON(response.offer)
)
我将API的响应转换为另一个对象btw,所以在将offer对象绑定到$ scope.offer变量之前,我需要进行以下转换:
$scope.offer = Offer.initializeFromJSON(response.offer)
非常感谢你的帮助!