Berechnete Eigenschaft wird nicht neu berechnet, wenn die Array-Abhängigkeit geändert wurde

8

Ich verwende eine berechnete Eigenschaft als items für ein dom-repeat .

%Vor%

Wenn sich die Abhängigkeit values ändert, wird die Eigenschaft nicht erneut berechnet.

%Vor%

Wenn ich values nicht ändere, setze ich es auf ein neues Array, es funktioniert:

%Vor%

Ist das ein Fehler oder erwartetes Verhalten?

Demo: Ссылка

    
Trevor Dixon 04.06.2015, 17:52
quelle

1 Antwort

10

Ich sprach mit Scott Miles, einem Mitglied des Teams hinter Polymer, und ich habe das zurückbekommen:

Damit die berechnete Eigenschaft ordnungsgemäß gebunden wird, müssen Sie [[double(values.*)]] verwenden.

Der Parameter, der an Ihre double -Funktion übergeben wird, ist ein Objekt mit den Eigenschaften path , value und base , genau wie bei der Pfadbeobachtung.

  • path verweist auf eine Pfadzeichenfolge, die angibt, ob length oder splices im Array
  • aktualisiert wurde
  • value ist der Wert von length oder splices und
  • base bezieht sich auf Ihr Array.

Beispiel:

%Vor%

Dokumente: Ссылка

Demo: Zypern

Eine dom-repeat Vorlage erwartet, dass sie mit einer Sammlung arbeitet, und wenn Sie sie direkt an values binden, weiß sie, dass sie die Elemente in values im Auge behält.

Berechnete Eigenschaften haben keine solchen Erwartungen und so funktioniert [[double(values)]] in diesem Fall nicht, da sie nur aktualisiert wird, wenn sich die values -Referenz selbst ändert, nicht wenn die Elemente in das Array ändert sich. Durch die Verwendung von values.* wird Polymer mitgeteilt, dass es die berechnete Eigenschaftsbindung aktualisieren soll, wenn der Inhalt des Arrays mutiert ist.

Ich würde dies hier bei Scott nicht posten, wenn nicht

  

sjmiles: @vartan: otoh, wenn du das, was du gelernt hast, transkribieren könntest, würde es mir helfen, Zeit ist meine am wenigsten elastische Ressource

    
Adaline Valentina Simonian 04.06.2015, 18:26
quelle

Tags und Links