Javascript AngularJS Limito过滤对象上的ngRepeat(像字典一样使用)

Javascript AngularJS Limito过滤对象上的ngRepeat(像字典一样使用),javascript,angularjs,angularjs-ng-repeat,angularjs-filter,Javascript,Angularjs,Angularjs Ng Repeat,Angularjs Filter,是否可以对重复对象属性而不是数组中项目的ngRepeat指令使用limito过滤器 我知道官方文档说limito的输入需要是数组或字符串。但我想知道是否有办法让它发挥作用 下面是一个示例代码: <li ng-repeat="(key, item) in phones_dict |orderBy:'-age'| limitTo:limit_items"></li> Limito仅适用于字符串和数组,对于对象,请使用自己的筛选器,例如: myApp.filter('myLi

是否可以对重复对象属性而不是数组中项目的
ngRepeat
指令使用
limito
过滤器

我知道官方文档说
limito
的输入需要是数组或字符串。但我想知道是否有办法让它发挥作用

下面是一个示例代码:

<li ng-repeat="(key, item) in phones_dict |orderBy:'-age'| limitTo:limit_items"></li>

Limito仅适用于字符串和数组,对于对象,请使用自己的筛选器,例如:

myApp.filter('myLimitTo', [function(){
    return function(obj, limit){
        var keys = Object.keys(obj);
        if(keys.length < 1){
            return [];
        }

        var ret = new Object,
        count = 0;
        angular.forEach(keys, function(key, arrayIndex){
            if(count >= limit){
                return false;
            }
            ret[key] = obj[key];
            count++;
        });
        return ret;
    };
}]);
myApp.filter('myLimitTo',[function(){
返回功能(obj,限制){
var keys=Object.keys(obj);
如果(键长<1){
返回[];
}
var ret=新对象,
计数=0;
角度.forEach(键,函数(键,数组索引){
如果(计数>=限制){
返回false;
}
ret[key]=obj[key];
计数++;
});
返回ret;
};
}]);

小提琴示例:

或者您可以使用“按$index跟踪”。。。你的极限是:

limitTo: $index == 5 (or any value)
添加

 ng-if ="$index < limit"
ng if=“$index

对于ng repeat标签,我做到了这一点,尽管这可能不是严格意义上的“正确”方式

默认Limito filter支持类似数组的对象()

此处的警告是,在对象中的键上迭代没有保证顺序,因此使用此选项可能没有意义,因为您每次可能会看到不同的结果True,orderBy也仅在数组中工作。在obj上。您还必须创建自己的对象过滤器。我扩展了我的示例,因此顺序也是另一个过滤器。这不起作用:
  • @YogeshMangaj-track by$index需要在ng repeat结束时进行,因此
  • 这对我不起作用。仍然在获取json文件中的每个对象,而不是5个。@OamPsy:我也在寻找类似的解决方案。请help@Ricky这很有效。过滤器('myLimitTo'也在工作,但会抛出一些匿名错误。工作就像一个符咒。limitTo不起作用。我尝试了很多方法,但这就是成功的方法。谢谢。
     ng-if ="$index < limit"