Ich verwende eine berechnete Eigenschaft als items
für ein dom-repeat
.
Wenn sich die Abhängigkeit values
ändert, wird die Eigenschaft nicht erneut berechnet.
Wenn ich values
nicht ändere, setze ich es auf ein neues Array, es funktioniert:
Ist das ein Fehler oder erwartetes Verhalten?
Demo: Ссылка
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 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
Tags und Links polymer polymer-1.0