首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带距离滤波器的误差

带距离滤波器的误差
EN

Stack Overflow用户
提问于 2016-01-19 20:43:59
回答 2查看 58关注 0票数 0

我有一个名为items的数组,我试图在一系列项中重复执行,比如0-4或5-11等等。所以我尝试创建我自己的自定义筛选器,但是它目前只是显示所有的数组元素。有更多知识的人能看看它吗?

html

代码语言:javascript
运行
复制
<div ng-app='myApp' ng-controller="Main">
  <li ng-repeat="item in items | filter:range(0,2)">test {{item}}</li>
</div>

过滤器

代码语言:javascript
运行
复制
var myApp = angular.module('myApp', []);
myApp.controller('Main', function($scope, $http) {
  $scope.items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
  $scope.range = function(min, max, step) {
    return function(items) {
      var arr = $scope.items;
      step = step || 1;
      var input = [];
      for (var i = min; i <= max; i += step) {
        if (arr[i] != null) {
          input.push(arr[i]);
        }
      }
      return items = input;
    };
  };
});

结果

代码语言:javascript
运行
复制
test 1
test 2
test 3
test 4
test 5
test 6
test 7
test 8
test 9
test 0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-19 21:09:03

如果以角度创建过滤器函数,则此函数必须返回"true“,如果给定项应该是结果集的一部分,则返回"false”。由于某种原因,您的函数返回"items =input“,这在这个上下文中是没有意义的,并且总是解析为true-ish,这就是为什么要显示所有项。你可以尝试的是

代码语言:javascript
运行
复制
$scope.range = function(min, max) {
    return function(item) {
        var i = $scope.items.indexOf (item); 
        return (i >= min && i <= max);
    };
  };

请参阅“角度筛选”文档,以了解如何使用此功能。

票数 1
EN

Stack Overflow用户

发布于 2016-01-22 14:12:13

为什么不像下面这样使用简单的ng-ifng-repeat,而不是这么麻烦呢?

代码语言:javascript
运行
复制
<li ng-repeat="item in items" ng-if="$index >= 2 && $index <=5">test {{item}}</li>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34886579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档