【问题标题】:grabbing just required results from json --- restangular从 json 中获取所需的结果——restangular
【发布时间】:2014-01-09 08:13:04
【问题描述】:

我试图从 json 中获取几个 id,而不是 json 的完整有效负载。那可能吗?这是我的代码

Car.controller('IndexCtrl', function ($scope, CarRestangular) {


  $scope.cars = CarRestangular.all('car').getList();


});

这是我的 json

[
    {
        "id": 1,
        "name": "Mike",

    },
    {
        "id": 2,
        "name": "Floyd",

    },
    {
        "id": 3,
        "name": "Roy",

    },
    {
        "id": 4,
        "name": "Roy",

    },

]

我想获取 id 为 2 和 4 的记录。我该怎么做。另外,如果可能的话,在我需要的另一种情况下,我需要做什么才能获得前两条记录。

谢谢

【问题讨论】:

标签: angularjs angularjs-scope restangular


【解决方案1】:

较新版本的 Angular 不会自动取消代理范围内的承诺。因此你不能立即这样做:

$scope.cars = CarRestangular.all('car').getList();

但你必须这样做:

CarRestangular.all('car').getList().then(function(result){
   $scope.cars = result;
));

如果您包含 lodash,过滤将是最好的。

https://gist.github.com/lc-nyovchev/7414166e4dbf2dfbc908

您使用为您进行过滤的方法定义服务:

.factory('SomeService',['$q', 'Restangular', function($q,Restangular){

    return {
        someMethod: function(){
            var deferred = $q.defer();
            Restangular.all('car').getList().then(function(results){
            var filtered = _.filter(results, function(result){
                return result.id === 2 || result.id === 4;
            });
            return deferred.promise;
        }
    };
}])

然后您在控制器中使用该服务:

.controller('YourController', ['SomeService', function(SomeService){
    SomeService.someMethod().then(function(filteredResult){
        $scope.cars = filteredResult;   
    });

}]);

或者你可以这样做:

CarRestangular.all('car').getList().then(function(results){
   $scope.cars = _.filter(results, function(result){
      return result.id === 2 || result.id === 4;
   });
});

编辑:所有这些答案都假设您想要进行过滤客户端。如果您的后端支持它,您可以执行以下操作:

CarRestangular.all('car').getList(id:[2,4]).then(function(result){
   $scope.cars = result;
));

如果您的后端以支持过滤 id 属性的方式编写,它将返回正确的结果,而您不必过滤它们。

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多