我对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);
})
答案 0 :(得分:1)
这是一个过滤器工作的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>
如果这有意义,请告诉我。