【问题标题】:Angularjs filter limit to include two paramsAngularjs过滤器限制包括两个参数
【发布时间】:2014-09-28 11:23:31
【问题描述】:

我想将它用作limitTo(input,begin,end)? 如何设置开始索引?

【问题讨论】:

    标签: angularjs filter


    【解决方案1】:

    在 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 应用和过滤器创建

    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);
    

    【讨论】:

    • 更新:从 Angular 1.4.0 开始,limitTo 接受第二个参数作为开始索引。
    【解决方案2】:

    创建您自己的过滤器来实现这一点。试试下面,

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

    用法:

    {{ limitTo_expression | limitFromTo : from : to}}
    

    【讨论】:

      【解决方案3】:

      您可以通过将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 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        • 2015-09-28
        • 2015-07-23
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多