Angularjs 角度查询(get)类型错误:对象#<;资源>;没有方法';推动';
我正在尝试进行一个查询,以显示产品目录的详细视图 这是我的服务:Angularjs 角度查询(get)类型错误:对象#<;资源>;没有方法';推动';,angularjs,Angularjs,我正在尝试进行一个查询,以显示产品目录的详细视图 这是我的服务: factory('ProductsFactory', function($resource){ var products = {}; products.getProducts = function(){ var productItems = $resource('/api/products/:productId',{ query: { method:'GET',
factory('ProductsFactory', function($resource){
var products = {};
products.getProducts = function(){
var productItems = $resource('/api/products/:productId',{
query: {
method:'GET',
params:{
productId:'productId'
},
isArray: true
}
});
return productItems;
}
return products;
});
这是我的控制器:
angular.module('clientApp')
.controller('ProductCtrl', function ($scope, ProductsFactory, $modal, $log, $stateParams) {
var productItems = ProductsFactory.getProducts()
$scope.products = productItems.query();
$scope.selectedProduct = productItems.get({productId:1});
});
第一个(productsItems.query())返回所有产品。它起作用了
但是$scope.selectedProduct(假定显示所选产品)不起作用
我在控制台中遇到此错误:
TypeError: Object #<Resource> has no method 'push'
TypeError:对象#没有方法“push”
你知道什么是错误的吗?我想这是因为AngularJS试图将一个对象(第二次查询的结果)强制转换为数组。当您获取所有对象时,它会工作,但当您仅获取一个对象时,它会失败。我猜这是因为AngularJS试图将对象(第二次查询的结果)强制转换为数组。当您获得所有对象时,它会工作,但当您只获得一个对象时,它会失败。奇怪的是,仍然没有批准的答案 正如在其他回答和评论中提到的,问题在于响应是对象而不是数组(或向后。可以通过在资源选项中设置
isArray:false
(或在相反的情况下设置isArray:true
)来修复):
但是,当您使用
$resource
时,您应该使它靠近REST体系结构,因此get
不应该返回数组-有query
。奇怪的是,仍然没有批准的答案
正如在其他回答和评论中提到的,问题在于响应是对象而不是数组(或向后。可以通过在资源选项中设置isArray:false
(或在相反的情况下设置isArray:true
)来修复):
但是,当您使用
$resource
时,您应该使其接近REST体系结构,因此get
不应该返回数组-有query
用于此目的。您添加了任何角度资源库吗?通过任何更改,您是否返回get({productId:1})的数组
。检查浏览器控制台。是否添加了任何角度资源库?通过任何更改,是否返回get({productId:1})的数组
。检查浏览器控制台。我这边也有同样的问题。它在我这边返回一个对象。你知道如何解决吗?我这边也有同样的问题。它在我这边返回一个对象。你知道如何解决吗?
get: {method: 'GET', isArray: false}