Angularjs过滤限制包括两个参数

时间:2014-09-28 11:23:31

标签: angularjs filter

我想将它作为limitTo(输入,开始,结束)使用? 如何设置开始索引?

3 个答案:

答案 0 :(得分:5)

版本1.4

正如 @doldt 所强调的那样,Angular 1.4现在添加了一个功能来指示限制的开始和结束:

{{ limitTo_expression | limitTo : limit : begin}}

https://code.angularjs.org/1.4.0/docs/api/ng/filter/limitTo

以前的版本1.4 Angular limitTo不支持多个参数:

{{ limitTo_expression | limitTo : limit}}

过滤器limitTo创建一个新数组或字符串,其中只包含limit参数中指定数量的元素。

因此,推荐的选项是创建自定义过滤器。

例如,此处是 Online Demo ,您可以这样做:

请注意,过滤器的第一个参数是"数据源" (整个清单)。过滤器的目的是过滤数据源。

HTML示例

<ul ng-controller="myCtrl">
    <li ng-repeat="row in friends |myFilter:2:5 ">{{row.name}}</li>
<ul>

Js App和过滤器创建

var myApp = angular.module('myApp',[]);

myApp.filter('myFilter', function() {
        return function(items, begin, end) {                                     

            return items.slice( begin, end);
        }
    });

function myCtrl($scope)
{    
    $scope.friends = [
      {name:'John', age:25, gender:'boy'},
      {name:'Jessie', age:30, gender:'girl'},
      {name:'Johanna', age:28, gender:'girl'},
      {name:'Joy', age:15, gender:'girl'},
      {name:'Mary', age:28, gender:'girl'},
      {name:'Peter', age:95, gender:'boy'},
      {name:'Sebastian', age:50, gender:'boy'},
      {name:'Erika', age:27, gender:'girl'},
      {name:'Patrick', age:40, gender:'boy'},
      {name:'Samantha', age:60, gender:'girl'}
    ];
}

myApp.controller('myCtrl',myCtrl);

答案 1 :(得分:1)

创建自己的过滤器来实现此目的。请尝试以下,

app.filter('limitFromTo', function(){
    return function(input, from, to){
        return (input != undefined)? input.slice(from, to) : '';
    }
});

用法:

{{ limitTo_expression | limitFromTo : from : to}}

答案 2 :(得分:1)

您可以通过将limitTo过滤器顺序应用到数组来实现令人失望的结果。 假设您要从4到9中提取项目:

<强> HTML:

{{ someArray | limitTo: to | limitTo: from}}

<强> JS

var from = 4;
$scope.to = 9;
$scope.from = from - $scope.to; // This value must be a negative