1

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

类别表
ID _ 标题 _ 关键字
1 _ 动物 _ 动物、动物、宠物、鹦鹉
2 _ 书籍 _ 书籍、书籍、教育
n _ xxx _ xxx

子类别表
id _ ref _ title _ 关键字
1 _ 1 _ 猫 _ 猫、波斯猫、孟加拉猫
2 _ 1 _ 狗 _ 狗、拉布拉多犬、金毛猎犬
3 _ 2 _ 经典 _ 达芬奇密码、书籍、书籍、经典书籍

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

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

4

2 回答 2

2

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

大部分工作发生在子类别选择过滤器中ng-options

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

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

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

更新:在看到 bfricka 的拍摄后,我可能误解了你的问题。我调整了小提琴并添加allCategories到模型组合categoriessubcategories过滤器中,仅针对在显示结果中键入的关键字ng-repeat

<div ng-repeat="c in allCategories | filter:{keywords:keyword}">{{c}}</div>
于 2012-09-09T02:33:06.123 回答
0

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

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

于 2012-09-09T03:34:27.280 回答