2013-09-16 24 views
0

我試圖做一個查詢,顯示產品目錄的詳細視圖。角度查詢(獲取)TypeError:對象#<Resource>沒有方法'推'

這是我的服務:

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' 

任何想法可能是錯誤的?

+0

有你添加任何角資源庫 –

+0

通過任何?變化是你回來了數組爲'get({productId:1})'。檢查你的瀏覽器控制檯 – Chandermani

+0

是的,這是一個數組。 – Per

回答

2

我想這是因爲AngularJS試圖將一個對象(第二個查詢的結果)轉換爲一個數組。它在你獲取所有對象時起作用,但當你只獲取一個對象時失敗。

+0

我在我身邊有同樣的問題。它返回一個對象在我身邊。你知道如何解決? – user1713964

3

奇怪的是,仍然沒有批准的答案。

在其他的答案和評論所提到的,問題是這樣的事實:響應是對象,而不是陣列(或向後它可以是固定通過在相反的情況下設置在資源選項isArray: false(或isArray: true):

get: {method: 'GET', isArray: false} 

但是當你正在使用$resource,你應該保持它接近REST的架構,因此get不應返回數組 - 有query對於

相關問題