【问题标题】:Angularjs ng-repeat filter all data not just the filtered resultsAngularjs ng-repeat 过滤所有数据而不仅仅是过滤后的结果
【发布时间】:2023-03-18 09:02:01
【问题描述】:

您好,我是 angularjs 新手,我有问题要问。

这是我的 ng-repeat 代码。

<ul ng-repeat="todo in filteredData | filter:search">

而且似乎这段代码只会过滤filteredData而不是alldata本身。

filteredData 总是等于 10,因为我在 angularjs 中使用了分页。

现在我的问题是有一种方法可以过滤所有数据,而不仅仅是过滤数据? 我试过了

<tr ng-repeat="todo in filteredData | filter:alldata:search">

但不工作。

谢谢

【问题讨论】:

  • 过滤器应用于“|”之前的变量。所以filteredData 会被过滤掉。你是怎么得到filteredData的?
  • filteredData 是如何创建的?那是您需要应用搜索过滤器的地方。 filter 过滤器只是过滤源是什么,所以你需要做todo in alldata | filter:search,然后应用分页。
  • @GoshaFighten 我通过除 allData/numPerPage 得到过滤数据。
  • @JasonGoemaat 是的,但如果我使用 allData,它将显示所有数据,并且分页将无法正常工作
  • 这样想......如果你去水果摊要十个苹果,他们给你 6 个绿色和 4 个红色的苹果,那么你只拿你只有绿色的苹果6个苹果。你想先要青苹果,然后拿其中的 10 个。过滤器需要在分页之前发生。

标签: angularjs angularjs-ng-repeat angularjs-filter


【解决方案1】:

最好的方法是将分页创建为过滤器。 那么你的代码将是

<tr ng-repeat="todo in alldata | filter:search | pagination:pageNum:perPage">

分页过滤器:

module.filter('pagination', function(){
  return function(array, page, perPage){
    return array.slice(page * perPage, (page+1) * perPage);
  }
});

完整的工作代码在这里:http://codepen.io/SimeonC/pen/gbpqNM?editors=101(请原谅玉和咖啡脚本 - 编辑器上方的眼睛向您显示已编译的 HTML/JS)

【讨论】:

    【解决方案2】:

    你可以使用这样的东西,假设你的完整数据列表存储在

    $scope.allData

    然后你可以在你的&lt;li&gt;中使用

    <li ng-repeat="todo in filterdData = (allData | filter:search)"> </li>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 2015-04-28
      • 1970-01-01
      • 2015-12-20
      相关资源
      最近更新 更多