我目前正在使用 Angular 资源 1.2.x 实现 REST API。我刚刚发现了几个提示,在 1.2.x 版本中,angular-resource 打破了一些现有的模式。我现在的问题是,如何使用 angular-resource 1.2.x 正确处理以下场景。
我确实有一个返回数据 (/offers/:id) 的 REST API 和一个使用角度资源抽象这些 API 的角度服务。在此服务中,我确实有一个 get 函数,可以使用给定的 id 查询 API:
_offerResource.get({offerId: id})
_offerResource 本身是 $resource 的一个实例。
在我的控制器中,我确实在视图绑定的 $scope 上有一个变量 offer(例如 $scope.offer.title,...)。
我尝试使用以下代码行来实现对 API 的调用:
_tempOffer = OfferAPI.get($routeParams.offerId)
但不幸的是,绑定不起作用。基于这个 SO 条目(Angularjs 承诺不绑定到 1.2 中的模板),角度资源的行为已经改变。但是使用 $promise.then(...) 语句的方法是要走的路吗?从工程的角度来看,这看起来很丑陋,因为我需要在控制器中处理这个问题,而不是服务返回我可以使用的对象。
这个可行,但如上所述,从软件设计的角度来看,这不是我最喜欢的方法:
_tempOffer = OfferAPI.get($routeParams.offerId)
_tempOffer.$promise.then((response) ->
$scope.offer = Offer.initializeFromJSON(response.offer)
)
顺便说一句,我将 API 的响应转换为另一个对象,因此我需要先进行以下转换,然后才能将 offer 对象绑定到 $scope.offer 变量:
$scope.offer = Offer.initializeFromJSON(response.offer)
非常感谢你的帮助!