使用对象列表,`filter`过滤器如何知道哪些字段匹配?

时间:2014-02-13 21:56:51

标签: dart angular-dart

我正在使用filter:query对json响应进行过滤。一切都很好。当我将json响应转换为适当的类时,过滤器停止工作。使用查询匹配类中的字段的方法是什么?这是我应该创建自己的自定义@NgFilter的情况吗?

2 个答案:

答案 0 :(得分:1)

对于AngularDart filter filter,您可以通过将字段名称作为键传递给地图来指定要匹配的字段。

我们以AngularDart tutorial Recipe类为例:

  class Recipe { String id; String name; String category; ... }

您可以使用字符Recipe.name写一下ctrl.nameFilterString来过滤:

  <li ng-repeat="recipe in ctrl.recipes | filter:{name:ctrl.nameFilterString}">

以下是filter API doc的摘录,解释了filter如何解释其论点。即在

  v | filter:x

参数x可以是

  • Stringboolnum:只有List中的项目 直接匹配此表达式,与任何地图一起使用的项目 匹配此项目的值以及包含a的列表项目 匹配的项目将被退回。

  • Map:这定义了一个模式映射。特定过滤器 输入List中包含的对象的属性。例如 {name:"M", phone:"1"}谓词将返回项目列表 其中包含属性name包含“M”和属性phone 包含“1”。可以使用特殊属性名称$ (如在{$: "text"}中)接受对象的任何属性的匹配。 这相当于与String匹配的简单子字符串匹配 如上所述。

答案 1 :(得分:0)

我不确定'filter:query'是什么意思。我想这是过滤器filter

filter似乎将集合中的项目转换为字符串,并将它们与搜索文本进行比较。 如果toString()不包含您要比较的字段,则不匹配。

自定义过滤器可能是最佳选择 例如:
angular.dart.tutorial / Chapter_07 / lib / filter / category_filter.dart