いくつかのケースで使用する汎用フィルタバリューコンバータを作成しようとしています。私は値を取得するsettings.where
式を解析する必要がありますするつもりだ知っているAurelia Value Converter、式を解析してサブプロパティをフィルタリングする
<li repeat.for="row of router.navigation | filter:'settings.where':'top'" >
:私はこのようなサブオブジェクトのプロパティによって配列内の項目ことができ、フィルタになりたいです。これまでのところ、私は一緒に次の石畳います
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
は私に表現を与えるように見えますが、パーサは、コアフレームワーク外で使用するように設計されたのですか? evaluate
にはスコープが必要ですが、そのうちの1つはありません...私は式ツリーを歩いて自分自身で結果を得ることができますが、このようなものは既に存在しますか?
この例では、単一のサブプロパティ値を値コンバータに渡す方法を示しています。私はパス内を渡そうとしているのですが、配列内の各項目について評価され、それぞれをフィルタリングするのに使用されます。 – Tim
達成したいことをもう少し説明し、評価されたいと思っているこのパターンをどのように見せることができますか? – kabaehr
私は、この回答のようなフィルタ値コンバータを持っています:http://stackoverflow.com/a/29163491/106623。これは 'item [property]'を使って比較する各項目の値を取得します。これは 'item.settings.where'にアクセスするための有効なJavaScriptではないので、サブプロパティ' item ['settings.where'] 'では機能しません。 aureliaのParserはすでに 'settings.where'を式に解析できますが、スコープなしで評価することはできません。 – Tim