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}