在休息服务中使用$ resource

时间:2015-11-02 13:54:23

标签: javascript angularjs rest angular-resource angularjs-resource

我试图熟悉.block{ position:absolute; } .red-sticker { font-family: Arial,sans-serif; position: absolute; right: -10px; top: -10px; display: block; width: 32px; height: 32px; padding-top: 5px; font-size: 12px; line-height: 12px; text-align: center; float: left; color: #FFF; border-radius: 50%; background-color: #A50200; background-image: linear-gradient(to bottom, #CB0400, #A50200); } 以使用RESTful Web服务。

所以,对于这次尝试,我宣布了一个这样的工厂:

$resource

在我的控制器中我有这个:

'use strict';

angular.module('BalrogApp').factory('Req', ['$resource', function($resource) {
  return $resource('http://localhost:8000/api/catalog/requests/:id', {id: '@id'}, {
    'update': { method: 'PUT'},
    'query': { method: 'GET'}
  });
}]);

这很好,在我的控制台中,我可以看到我的对象,其中包含从id为4的项目的服务中检索到的数据。

但是我不确定我是否正确检索数据,因为我在angular.module('BalrogApp').controller('requestsController', function(Req, $route, $rootScope, $scope, $location, $routeParams) { this.$route = $route; var controllerScope = this; this.r = Req.get({ id:4 }); console.log(this.r); 中存储的对象包含一个类似于对象详细信息的ID(点击&# 34;对象&#34;在浏览器控制台中显示对象详细信息,包括其ID),但控制台上显示的对象本身(r)仅包含2个字段,如下所示:r。< / p>

因此,最后Object { $promise: Object, $resolved: false }有效,但console.log(this.r);即使console.log(this.r.id);应该包含ID,就像浏览器检查器中的对象详细信息一样。

此外,我如何配置此服务,以便能够r使用get()参数,就像我执行调用id一样,但也没有导致调用http://localhost:8000/api/catalog/requests/:id

id参数

1 个答案:

答案 0 :(得分:2)

由于对REST API的调用是异步的,因此在使用Req.get({ id:4 });

时,请等待返回的承诺解析

使用:

Req.get({ id:4 }).$promise.then(function(result){
  console.log(JSON.stringify(result));
});

代替。

对于问题的第二部分:使用没有id属性的数据应该没问题。但是,这些数据将在请求正文中传输,而不是作为请求参数传输。