我尝试创建一个通用的过滤器值转换器,以便在少数情况下使用。我希望能够通过子对象的属性过滤数组中的项目,如下所示:
<li repeat.for="row of router.navigation | filter:'settings.where':'top'" >
我知道我必须解析settings.where
表达式以获取值。到目前为止,我拼凑了以下内容:
import {inject, Parser} from 'aurelia-framework'
@inject(Parser)
export class FilterValueConverter {
constructor(parser) {
this.parser = parser;
}
toView(array, property, exp) {
let expression = this.parser.parse(property);
return array.filter((item) => expression.evaluate(...?) === exp);
}
}
parse
似乎给了我一个表达,但Parser是否设计用于核心框架之外? evaluate
需要一个范围而我没有其中一个...我可以走表达式树并自己获得结果但是这样的事情已经存在了吗?
答案 0 :(得分:1)
这是从aurelia blog post about value converters:
剪掉的也许这会对你有所帮助,考虑到这一点,你应该能够在没有引号的情况下使用你的例子:
<li repeat.for="row of router.navigation | filter:settings.where:'top'" >