Javascript 如何在Angular.js中返回和数组JSON对象

Javascript 如何在Angular.js中返回和数组JSON对象,javascript,arrays,json,angularjs,Javascript,Arrays,Json,Angularjs,想象一下以下JSON API: [ { "id": "1", "name": "Super Cateogry", "products": [ { "id": "20", "name": "Teste Product 1" }, { "id": "21", "name": "Teste Product 2" }, { "id": "

想象一下以下JSON API:

[
  {
    "id": "1",
    "name": "Super Cateogry",
    "products": [
      {
        "id": "20",
        "name": "Teste Product 1"
      },
      {
        "id": "21",
        "name": "Teste Product 2"
      },
      {
        "id": "22",
        "name": "Teste Product 3"
      }
    ]
  }
]
我是否可以使用Angularjs仅返回
产品
数组

我有一个简单的服务调用JSON:

services.factory("ProductService", function($http) {
    return {
        "getProducts": function() {
            return $http.get("/product/index");
        }
    };
});
在控制器中调用的,如下所示:

components.success(function(data) {
  $scope.products = data;
});
但是它像预期的那样返回整个JSON,我需要它只返回“products”数组,这样我就可以遍历它


PS:这只是一个简单的例子来说明问题,我意识到在这种情况下我可以更改API以满足我的需要,但这不是重点。

您只需将产品数组分配给scope属性

components.success(function(data) {
  $scope.products = data[0].products;
});

你可以通过承诺来定制它,然后自己动手

"getProducts": function() { 
        var promise = $q.defer();
        $http.get("/product/index").success(function(data){
            promise.resolve(data && data.products);
        }).error(function(msg){  
            promise.reject(msg);
        })
        return promise.promise;
}
如何使用:

getProducts().then(
  function(data) {
    $scope.products = data;
  },  
  function(msg){
     alert('error')
  }
);

是的,我已经试过了,它返回为“未定义”,原因我无法解释。只是注意到它在数组中。更新的答案。哦,当然。我现在觉得自己很笨。谢谢你,伙计!这正是我拍摄的目的,简单而高效。从来没有承诺过,我必须检查一下。我应该在控制器中做什么才能保证获得数据?“成功”显然不存在于承诺中。更新如上。只要用承诺,然后(successFunc,errorFunc)有趣。我将来必须更多地研究承诺。现在,人们接受的答案是快速解决我的目标。谢谢你的提示,我以后会记住的。