Ich versuche, einen generischen Filter Value Converter in einigen Fällen zu verwenden. Ich möchte in der Lage Filter werden die Elemente im Array von Eigenschaften auf Unter Objekte wie folgt aus:Aurelia Value Converter, filtert Sub-Eigenschaften durch Parsing Ausdruck
<li repeat.for="row of router.navigation | filter:'settings.where':'top'" >
Ich weiß, ich werde den settings.where
Ausdruck haben, zu analysieren, um den Wert zu erhalten. Bisher habe ich gebastelt folgende:
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);
}
}
Die parse
erscheint mir einen Ausdruck zu geben, sondern wurde der Parser entwickelt, um außerhalb des Kerns Rahmen verwendet werden? evaluate
erfordert einen Bereich und ich habe keinen von denen ... Ich könnte den Ausdrucksbaum laufen und das Ergebnis selbst erhalten, aber existiert so etwas schon?
Dieses Beispiel zeigt, wie ein einzelner Untereigenschaftswert an den Wertkonverter übergeben wird. Ich versuche, einen Pfad zu übergeben, der für jedes Element im Array ausgewertet werden kann, und verwendet, um jedes von ihnen zu filtern. – Tim
Können Sie etwas mehr erklären, was Sie erreichen möchten und wie diese Pfade aussehen, die Sie ausgewertet werden möchten? – kabaehr
Ich habe einen Filterwertkonverter wie der in dieser Antwort: http://stackoverflow.com/a/29163491/106623. Es verwendet 'item [property]', um einen Wert für jedes Element zu erhalten, mit dem verglichen werden soll. Dies funktioniert nicht für die Untereigenschaften 'item ['settings.where']' als ungültiges JavaScript für den Zugriff auf 'item.settings.where'. Der Parser in aurelia kann "settings.where" bereits in einen Ausdruck einlesen, aber ich kann es nicht ohne einen Bereich auswerten. – Tim