我有一个构建应用
var HappySundayonEtsyApp = angular.module('HappySundayonEtsyApp', ['ngResource']);
使用像
这样的控制器HappySundayonEtsyApp.controller('ListingsController',
function ListingsController ($scope, $filter, Listings, $resource) {
$scope.sortingOrder = sortingOrder;
...
控制器工作正常,控制器中添加了一些静态JSON用于测试。当我尝试使用定义为
的服务获取数据时HappySundayonEtsyApp.factory('Listings', ['$resource', function ($resource) {
var resource = $resource('/listings/:id', {
id : '@id'
}, {
index : { method: 'GET', isArray : true },
save : { method : 'PUT' }
});
return resource;
}]);
并在控制器中
$scope.items = Listings.get()
没什么作用。当我通过简单的验证时,URL提供了非常精细的JSON
$http.get('/listings/').success(function(data){
$scope.items = data;
});
在调试器(Chrome)中,我看到了
Listings.get(): h
__proto__: h
我使用的是1.0.3版本。我真的很感激,如果有人可以提供帮助,我在阅读,尝试和调试2天后感到非常沮丧。可能这很简单...
感谢。
答案 0 :(得分:4)
使用$resource
时,调用.get
方法不会返回HTTP调用的响应,它只返回它的承诺。这意味着$ scope.items 将来的未来包含结果。
要确保$scope.items
包含HTTP / $资源调用的响应,请在回调中分配$ scope.items:
Listings.get(function (response) {
$scope.items = response;
});
但是,假设你有这个:
<ul>
<li data-ng-repeat="item in items"></li>
</ul>
然后你可以使用它:$scope.items = Listings.get()
由于当履行承诺时,重复将被更新并迭代所有项目。
答案 1 :(得分:1)
实际上,看起来您的JSON是一个数组,并且您明确定义了index
操作
在哪里设置isArray : true
,所以你可能会这样做:
$scope.items = Listings.index();