Aurelia Value Converter,通过解析表达式过滤子属性

时间:2016-04-07 14:00:45

标签: aurelia aurelia-binding

我尝试创建一个通用的过滤器值转换器,以便在少数情况下使用。我希望能够通过子对象的属性过滤数组中的项目,如下所示:

<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需要一个范围而我没有其中一个...我可以走表达式树并自己获得结果但是这样的事情已经存在了吗?

1 个答案:

答案 0 :(得分:1)

这是从aurelia blog post about value converters

剪掉的

enter image description here

也许这会对你有所帮助,考虑到这一点,你应该能够在没有引号的情况下使用你的例子:

<li repeat.for="row of router.navigation | filter:settings.where:'top'" >