Filter AngularDart:过滤器链接:过滤器的顺序重要吗?
我想了解链式过滤器/格式化程序如何通过ng repeat指令在AngularDart中执行 有人能以简洁明了的方式解释它是如何工作的吗 参考教程没有提供足够的详细信息,无法完全掌握AngularDart链式过滤器执行的工作原理。下面是我通过查看文档和回顾AngularDart源代码部分所了解的内容 参考链接: 原github帖子: **在ng repeat中评估过滤器的假定执行链** 格式化程序/筛选器可以访问中继器内部的列表,例如ng repeat recipeList通过ng repeat的范围提供给cf cf=categoryfilter(列表,映射)-->categoryfilter fltr=过滤器(列表,名称过滤器字符串)-->filteredList,名称 ordBy=orderBy(列表,名称)-->orderdListFilter AngularDart:过滤器链接:过滤器的顺序重要吗?,filter,dart,angular-dart,ng-repeat,data-formatters,Filter,Dart,Angular Dart,Ng Repeat,Data Formatters,我想了解链式过滤器/格式化程序如何通过ng repeat指令在AngularDart中执行 有人能以简洁明了的方式解释它是如何工作的吗 参考教程没有提供足够的详细信息,无法完全掌握AngularDart链式过滤器执行的工作原理。下面是我通过查看文档和回顾AngularDart源代码部分所了解的内容 参考链接: 原github帖子: **在ng repeat中评估过滤器的假定执行链** 格式化程序/筛选器可以访问中继器内部的列表,例如ng repeat recipeList通过ng repeat的
表达式中的格式化程序的顺序如下
[Appetizers, Salads, Soups, Main Dishes, Side Dishes, Desserts, Desserts]
返回
[Desserts, Appetizers, Salads, Desserts, Side Dishes, Soups, Main Dishes]
未更改地传递到categoryfilter(因为尚未设置任何筛选值)categoryfilter再次返回未更改的集合 选择类别后,仅调用类别格式化程序。
输入名称(筛选器表达式的值)后,将调用筛选器和categoryfilter格式化程序。 更改名称筛选器值有时仅触发筛选器,有时还会触发categoryfilter格式化程序 格式化程序的调用顺序始终与它们在标记中的显示顺序相同,但并非每次都调用每个筛选器。角度识别依赖项,并且仅在依赖项值更改时调用筛选器 编辑 此表达式的结果将传递给
ng repeat
ctrl.recipes | orderBy:'name'| filter:{name:ctrl.nameFilterString}| categoryfilter:ctrl.categoryFilterMap
ctrl.receipes
将传递给所有筛选器,最后一个筛选器的结果将传递给ng repeat
编辑2
我只是复制以下报告的调查结果:
我在调试器中确认了该行为。看来你的答案应该稍加修改
orderBy
返回其更改的列表并将其传递给filter
,即使在filter输入文本框中未输入任何内容。然后,filter
处理输入文本框字段值的null
。然后,filter
将列表原封不动地传递给categoryfilter
之后,categoryfilter
将列表传递给ng repeatHi Günter,我试图通过调试器在categoryfilter.dart和角度过滤器中放置断点来确认行为:orderBy,过滤器和ng通过Dart编辑器重复,但代码执行不会停止编辑器中的@breakpoints。您是如何确认上述行为的?我不确定您是指带有@断点的特殊行为。但除此之外,我就是这么做的。我在Filter、SortBy和CategoryFilter类的call()
方法的第一行设置了一个断点。我以前遇到过几个DartEditor版本在断点处不停止的问题,但如果不是这样的话,它应该可以正常工作。嗨,甘特,看来我有多个Dartium实例在运行,这显然妨碍了调试器的正确执行。关闭所有实例并重新启动后,编辑器以调试模式启动。再次感谢!嗨,甘特,我确认了调试器中的行为,似乎上面的答案应该有一点修正。即使过滤器输入文本框中未输入任何内容,ordBy也会返回其已更改的列表并将其传递给过滤器。然后过滤器处理输入文本框字段值的null。然后过滤器将列表AsIs传递给categoryfilter,然后categoryfilter将列表传递给ng repeat。我希望复制您的评论时您不会介意。