AngularJS,过滤器:如何将大型巨型对象(JSON)转换为数组?

时间:2015-01-19 20:38:53

标签: javascript arrays json angularjs

我对Angular过滤器有一些问题,根据docs过滤器只适用于数组,我现在有一个非常大的对象,实际上是显示一些动态内容。我会给你们留下一些我正在经历的不同的例子。

第一个我想要实现的行为,you can see it here

第二个让我们说this is与我在浏览器控制台中从网络中提取的真实JSON对象。

在第二个例子中,你验证了我的搜索者无法正常工作的原因,实际上是因为我刚才提到的对象。

我的服务名为SportsFactory,具有此功能

$http.get(CONSTANT_VARS.BACKEND_URL + '/lines/sports/' + agent)
            .success(function(sports) {
              //here I need: forcing array instead of object
              sports = _.values(sports);
              sports = _.sortBy(sports, function(sport) {
                return sport.priority;
              });
              console.log(sports)
              LocalForageFactory.set(CONSTANT_VARS.LOCALFORAGE_SPORTS, sports);
              defer.resolve(sports);
            })
            .error(function(err) {
              defer.reject(err);
            });

正如您所看到的那样,console.log会返回此信息:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

现在,为了让我的过滤器正常工作,我该怎么办? 为了将sports object转换为数组,我该怎么办?

基本上这部分函数是返回我告诉你的那个对象的那部分,这是我需要返回一个数组的那个

      .success(function(sports) {
          //forcing array instead of object
          sports = _.values(sports);
          sports = _.sortBy(sports, function(sport) {
            return sport.priority;
          });
          console.log(sports)
          LocalForageFactory.set(CONSTANT_VARS.LOCALFORAGE_SPORTS, sports);
          defer.resolve(sports);
        })

1 个答案:

答案 0 :(得分:1)

这是一个过滤器工作的plunkr,我只是将你正在制作的数组设置为$ scope.variable并将其用于ng-repeat。

Plunkr

我稍微修改了代码,因为我没有在plunkr中执行GET请求,但想法是一样的。

var mySports = _.values($scope.sports);
    $scope.sportsArray = _.sortBy(mySports, function(sport) {
    return sport.priority;
});
console.log($scope.sportsArray);

//and the HTML

<div ng-repeat="sport in sportsArray | filter:query"></div>

如果这有意义,请告诉我。