【问题标题】:Multiple filters on same page - Search, Filter, Sort同一页面上的多个过滤器 - 搜索、过滤、排序
【发布时间】:2016-09-26 09:34:01
【问题描述】:

我遇到了障碍。我正在尝试让这些过滤器

  • 功能正常
  • 互相玩好,这样我就可以对这个页面上的信息进行相应的排序

搜索工作正常,但我对过滤器不满意。这些是我访问过的文章,但我没有奇迹般的顿悟或“啊哈!”时刻。我现在感觉像是终极的 Angular 磨砂膏。

过去 5 到 6 个小时我一直在努力,但我完全没有运气。我需要一个 AngularJS 英雄!我怎样才能让这些过滤器工作?在这一点上,任何帮助将不胜感激。代码如下。谢谢!!!

jsFiddle link to my project

【问题讨论】:

  • 其中很多是 angular 101 - 您缺少过滤器组件上的绑定,最重要的是,您在所述绑定上缺少某种手表。例如,您的搜索有效,因为您有一个ng-model,并通过ng-repeat="item in inventory | filter: searchInventory过滤您的数据
  • 谢谢凯文。我对这些东西比较陌生。尝试通过构建来学习。感谢您的意见。

标签: javascript angularjs angularjs-filter


【解决方案1】:

您可以很容易地让选择列表排序工作 - 将您的 ng-repeat 更改为:

<div ng-repeat="item in inventory | filter: searchInventory | orderBy:sortOrder">

然后在您的$scope 上声明:

// whatever you want to be the default
$scope.sortorder = "name";

然后将此作为ng-model 添加到您的选择中:

<select class="form-control" name="sort" ng-model="sortOrder">

您在选择列表Option 标签上的值必须与您在$scope.inventory 中的项目中指定的名称相匹配。使用- & + 进行降序和升序:

<option value="-price">Price</option>
<option value="lowInventory">Low Inventory</option> // not declared
<option value="+qty">Out of Stock</option>
<option value="-status">Inactive</option>
<option value="+status">Status</option>

注意:您必须为 Low Inventory 添加自己的逻辑。

请参阅工作 jsfiddle here

复选框过滤更高级一些,请参阅here 示例。

更新:我设法使用简单的ng-true-value 过滤器使一些复选框过滤工作。

<input type="checkbox" data-ng-model='search.status2' data-ng-true-value='inactive' data-ng-false-value=''> Inactive

<input type="checkbox" data-ng-model='search.status1' data-ng-true-value='!inactive' data-ng-false-value=''> Active

请参阅here 以获取更新的小提琴。

【讨论】:

  • 非常感谢,詹姆斯!感谢您的帮助。
  • 感谢您的帮助,我最终做了一些更改。我注意到,由于我已经在使用模型searchInventory.$,所以我可以在不添加过滤器的情况下背靠键/值。现在我正在研究缺货过滤器。我将缺货过滤器设置为ng-true-value='0',但这最终会显示编号为0 的项目。例如,库存为30 的产品仍会显示,因为它包含0。关于如何解决这一挑战的任何想法? Updated jsFiddle 在这里
  • 谢谢詹姆斯。我做了你在 jsFiddle 中显示的更改。当我将更改放入我的代码时,它似乎没有工作。那时我意识到 jsFiddle w 中有一个错误。正在使用的 Angular 版本。 jsFiddle 使用的是 1.2,而我使用的是 1.5。我的疏忽很大。我已经相应地更新了 data-true 语法,但我似乎无法弄清楚如何使用您提供的过滤器 searchInventory:!!searchInventory.qty 并转换为 1.5 语法。 Updated jsFiddle w correct Angular
  • 我非常感谢今天的帮助。谢谢!也许是一个奇怪的要求,但你的 PayPal 是什么?我想给你买一品脱!
猜你喜欢
  • 2020-01-18
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多