我正在使用filter:query对json响应进行过滤。一切都很好。当我将json响应转换为适当的类时,过滤器停止工作。使用查询匹配类中的字段的方法是什么?这是我应该创建自己的自定义@NgFilter的情况吗?
答案 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
可以是
String
,bool
和num
:只有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