我試圖熟悉$resource
以使用RESTful Web服務。
所以,在嘗試,我宣佈一個工廠是這樣的:
'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'}
});
}]);
在我的控制器我有這樣的:
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爲4的項目的服務中檢索的數據。
但是我不知道我正確地檢索數據,因爲我要存儲在r
中的對象包含(在瀏覽器控制檯中單擊「對象」顯示包括其ID的對象詳細信息),但控制檯上顯示的對象本身(r
)僅包含2個字段,其顯示方式如下:Object { $promise: Object, $resolved: false }
。
因此,最後,console.log(this.r);
工程,但console.log(this.r.id);
不,即使r
應該包含一個ID,就像在瀏覽器檢查器的對象的詳細信息。
另外,我怎麼可以配置該服務,以便能夠使用get()
與id
參數,就像我在做這將導致調用http://localhost:8000/api/catalog/requests/:id
也沒有id
參數導致調用http://localhost:8000/api/catalog/requests
感謝您的回覆。 「使用沒有ID的數據」是什麼意思?我嘗試用'Req.get({})'或者'Req.get()'替換'Req.get({id:4})',但這不起作用。 你也可以鏈接我在哪裏找到一些關於你使用的'$ promise'的文檔? – Ellone
不確定,但'Req.get()'或者''Req.get(null)'應該可以工作。查看ngResource文檔的「返回」部分:https://docs.angularjs.org/api/ngResource/service/$resource以獲取返回的承諾的解釋。 –
好吧,沒有參數,這個錯誤會引發:'資源配置錯誤'get'。預期響應包含一個對象,但得到一個數組(請求:GET http:// localhost:8000/api/catalog/requests)'。 不是'$ resource('http:// localhost:8000/api/catalog/requests /:id''使'id'成爲必填字段也許? – Ellone