AngularJS,过滤器:如何将一个巨大的巨型对象(JSON)变成一个数组?
AngularJS, filters: how to turn a big giant object (JSON) into an array?
我在使用 Angular 过滤器时遇到一些问题,根据 docs 过滤器仅适用于数组,我现在有一个非常大的对象,实际上是显示一些动态内容.我会给你们留下一些我正在经历的不同例子。
1st 我想要实现的行为,you can see it here。
2 假设 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
是 returning 这个:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
现在,我该怎么做才能让我的过滤器正常工作?
我该怎么做才能将 sports object
转换为数组?
基本上,函数的这一部分就是 return 我告诉你的那个对象,我需要 return 一个数组来代替
.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);
})
这是过滤器工作的 plunkr,我只是将您制作的数组设置为 $scope.variable 并将其用于 ng-repeat。
我稍微修改了代码,因为我没有在 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>
让我知道这是否有意义。
我在使用 Angular 过滤器时遇到一些问题,根据 docs 过滤器仅适用于数组,我现在有一个非常大的对象,实际上是显示一些动态内容.我会给你们留下一些我正在经历的不同例子。
1st 我想要实现的行为,you can see it here。
2 假设 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
是 returning 这个:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
现在,我该怎么做才能让我的过滤器正常工作?
我该怎么做才能将 sports object
转换为数组?
基本上,函数的这一部分就是 return 我告诉你的那个对象,我需要 return 一个数组来代替
.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);
})
这是过滤器工作的 plunkr,我只是将您制作的数组设置为 $scope.variable 并将其用于 ng-repeat。
我稍微修改了代码,因为我没有在 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>
让我知道这是否有意义。