【发布时间】:2014-09-28 11:23:31
【问题描述】:
我想将它用作limitTo(input,begin,end)? 如何设置开始索引?
【问题讨论】:
我想将它用作limitTo(input,begin,end)? 如何设置开始索引?
【问题讨论】:
在 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);
【讨论】:
创建您自己的过滤器来实现这一点。试试下面,
app.filter('limitFromTo', function(){
return function(input, from, to){
return (input != undefined)? input.slice(from, to) : '';
}
});
用法:
{{ limitTo_expression | limitFromTo : from : to}}
【讨论】:
您可以通过将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
【讨论】: