2016-06-02 3 views
1

Ich habe ein Array von Objekten, die ich über eine ValueConverter an das DOM binde. Aurelia kann nicht genau herausfinden, was ich in der ValueConverter mache, und so wird es nicht richtig aktualisiert. Ich möchte eine schmutzige Überprüfung dieses Objekts erzwingen. Wie kann ich das machen?Erzwingen der Überprüfung in Aurelia

Antwort

3

Setzen Sie Ihr Array über einen Eigenschaften-Getter frei.

Statt:

export class Foo { 
    myArray = [];  // will be observed without dirty-checking 
} 

eine Eigenschaft Getter Verwendung:

export class Foo { 
    _myArray = []; // internal value that you will manipulate as-needed 

    get myArray() { // this property will be dirty-checked. 
    return this._myArray; 
    } 
} 
+0

ein wenig ausführlich, wäre es möglich, für uns etwas in der Ansicht, dass Fahnen eine besondere Bindung, wie schmutzig überprüfbar schließen, ala Bindungsverhalten? –

+0

Ich denke das wäre möglich- [heres] (https://gist.run/?id=304cddadb7374610117a6dea2074ff5d) ein * unvollständiger * aber funktionierender Prototyp. Das Problem besteht darin, dass die Beobachter des Bindungssystems an Objektinstanzen-/Eigenschaftskombinationen gebunden sind und nicht an spezifische Bindungsinstanzen. Mehrere Bindungsinstanzen teilen sich Beobachter. Zum Beispiel verwendet '$ {foo.bar.baz} $ {foo.bar.beep}' letztendlich 4 Total Property Observer, obwohl in jedem Ausdruck 3 Requisiten zu beobachten sind. Wir müssten einiges mehr an dem Binding-Verhalten tun, um die binding * instance * spezifisch zu machen. –

+0

Ich denke, das ist nicht der beste Weg, um das eigentliche Problem zu lösen, die ich hatte, wahrscheinlich nicht unsere Zeit wert, um zu versuchen, es zum Laufen zu bringen. Ich denke, eine bessere Lösung würde die offenen Probleme mit dem Wertwandler lösen. Da wir keine Ahnung haben, welche Informationen ein Wertkonverter verwenden soll, brauchen wir einen sauberen Weg, um dem Entwickler mehr Leistung zu geben, wenn die Bindung neu berechnet wird. Vielen Dank! –