1

Wir übergeben einen Objektparameter an die folgende value converter.Übergeben Sie ein Objekt direkt an einen Wertkonverter, anstatt es manuell in ein neues Objekt zu kopieren.

export class SortValueConverter { 
    toView(array, config) { 
    // do stuff 
    } 
} 

Wir übergeben das Objekt an den Wertkonverter, indem wir es manuell in ein neues Objekt kopieren.

<select value.bind="config"> 
    <option repeat.for="s of sortOptions" 
      model.bind="s.config">${s.friendlyName} 
    </option> 
</select> 

<div repeat.for="u of users | sort:{ prop: config.prop, dir: config.dir}"> 

Wir möchten stattdessen das Objekt direkt übergeben.

<div repeat.for="u of users | sort:config"> 

Wie können wir das tun?

Antwort

2

Sie sollten es genau so machen können, wie Sie es möchten. Überprüfen Sie folgendes Beispiel: https://gist.run/?id=49d1b3acf5fe7d168909a4f49dca152e

MyItem.html

<select value.bind="config"> 
    <option repeat.for="s of sortOptions" 
      model.bind="s.config">${s.friendlyName} 
    </option> 
</select> 
<div repeat.for="u of users | sort:config"> 

MyItem.js Stellen Sie sicher, dass Sie einen Standardwert für Ihre Konfiguration festgelegt!

export class MyItem { 
    users = []; 
    config; 
    sortOptions = [ 
    { config: { propertyName: 'aaa', direction: 'ascending' }, friendlyName: 'aaa' }, 
    { config: { propertyName: 'bbb', direction: 'descending' }, friendlyName: 'bbb' }, 
    { config: { propertyName: 'ccc', direction: 'descending' }, friendlyName: 'ccc' } 
    ]; 

    constructor(userRepo: UserRepository) { 
    this.config = this.sortOptions[0]; 
    } 
} 
+0

Seltsamerweise funktioniert es nicht für mich. –

+0

Hmm. Hast du zufällig eine wirklich alte Version der Aurelia-Bibliotheken, die einen Fehler enthält oder so? Wir haben letzte Woche RC getroffen. –

+0

Ich definiere die Sortierkonfiguration in der Ansicht, während das von Ihnen erstellte Argument es im viewModel definiert. –