【问题标题】:Is angularjs capable of filtering based on keywords?angularjs 是否能够根据关键字进行过滤?
【发布时间】:2012-09-02 08:00:57
【问题描述】:

我在 mysql 中有 30 个类别。 我有 450 个子类别,它们与另一个表中的 30 个类别相关。

类别表
id _ title _ 关键字
1 _ 动物 _ 动物、动物、宠物、鹦鹉
2 _ 书籍 _ 书籍、书籍、教育
n_xxx_xxx

子类别表
id_ref_title_keywords
1 _ 1 _ 猫 _ 猫、波斯猫、孟加拉猫
2 _ 1 _ 狗 _ 狗、拉布拉多、金毛猎犬
3 _ 2 _ 经典 _ 达芬奇密码,书籍,书籍,经典书籍

我需要对文本字段实施过滤器。如果用户在文本字段中输入 labrador,则显示关键字中包含“labrador”的类别或/和子类别。 在这种情况下,将出现“狗”子类别!

我知道这是使用 jquery 完成的。但是无论如何用angularJs来实现这个? 如果你有一个 jsfiddle 那就太棒了! :) 谢谢

【问题讨论】:

    标签: html angularjs


    【解决方案1】:

    This fiddle 可以帮助您入门。尝试在文本框中输入“拉布拉多”,注意第二个下拉菜单只显示狗。如果您输入“波斯”,则第二个下拉菜单仅显示猫。

    大部分工作都发生在ng-options 中的子类别select 过滤器中:

    <select ng-model="selectedSubCategory" ng-options="c.title for c in subcategories | filter:{ref: selectedCategory.id, keywords:keyword}"></select>
    

    filter 过滤器允许您通过多个字段限制绑定数组。在此示例中,它通过两件事进行过滤:

    1. subcategories 上的 ref 基于第一个选择下拉列表中的 selectedCategory。这本身仅显示与当前选择的类别匹配的子类别。
    2. subcategories 上的 keywords 基于在输入文本框中键入的 keyword。这意味着当您在文本框中输入内容时,$scope.keyword 模型中的值将被更新,并自动过滤 subcategories 以查找包含输入文本的任何 keywords。

    更新:在看到 bfricka 的观点后,我可能误解了你的问题。我tweaked the fiddle 并将allCategories 添加到组合categories 和subcategories 的模型中,并且仅针对在ng-repeat 中显示结果时键入的关键字进行过滤:

    <div ng-repeat="c in allCategories | filter:{keywords:keyword}">{{c}}</div>
    

    【讨论】:

      【解决方案2】:

      我选择了一条不同的道路。这只是使用一些下划线过滤器修改模型。这有点粗糙,但它可能是一个很好的起点。

      http://jsfiddle.net/bfricka/J3kDS/

      【讨论】:

      • 顺便说一句,我会将匹配提取到一个单独的方法中,例如 DRY,但你明白了。
      • +1 让我从新的角度看待这个问题并获得漂亮的结果:)
      • 您的解决方案要优雅得多,但感谢您的支持。新的用户限制很糟糕:)
      猜你喜欢
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2011-06-16
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多