Wenn ich die Eigenschaft value
des DOM-Objekts (in JS) ändere, kann ich sehen, dass sich der Wert des Textfelds ändert.
Wenn ich den Textfeldwert ändere, ändert sich auch die DOM-Objekteigenschaft value
.
Beide Änderungen haben jedoch keine Auswirkungen auf das Attribut value
.
Wenn sich das value
-Attribut nicht ändert, wie ist dann die Änderung des Modells in der Ansicht?
Ich dachte, dass value={{value}}
eine Art zu sagen ist, "wenn sich die Eigenschaft value
ändert, ändere das Attribut value
und umgekehrt". Wenn das value
-Attribut nicht die Verknüpfung zwischen der Ansicht und dem Modell ist, wie werden dann die Änderungen propagiert?
Was genau bedeutet value={{value}}
?
Die Bindung (z. B. {{value}}
) für die value
-Attributänderung der Eingabe wird nicht angezeigt, da Polymer eine bidirektionale Bindung für diese Eigenschaft einrichten muss. Wenn es durch den tatsächlichen Wert ersetzt würde, wäre der Wert nicht mehr datengebunden.
Es gibt einen vollständigen Abschnitt in den Polymer-Dokumenten zu "Funktionsweise der Datenbindung": Ссылка
Ich dachte, dass
value={{value}}
eine Art zu sagen ist, "wenn sich dievalue
Eigenschaft ändert, ändere das Attributvalue
und umgekehrt".
Unter der Haube verwendet Polymer die Bibliothek Node.bind()
, um die Eigenschaftenänderungen von Elementen an Daten zu binden. Vor allem Eingaben unterstützen die 2-Wege-Datenbindung für ihre Attribute value
und checked
:
Das Zurückspiegeln von Eigenschaftswerten zurück zum Attribut ist jetzt aktiviert . Die Dokumente werden gerade aktualisiert, um dies zu berücksichtigen. Um dieses Verhalten zu erhalten, verwenden Sie anstelle des attributes
-Attributs für Ihr polymer-element
-Tag die publish
-Eigenschaft in Ihrem Aufruf von Polymer()
, wie folgt:
In Polymer 1.0 gibt es die Zwei-Wege-Datenbindung für native Elemente oder allgemein für Nicht-Polymer-Elemente. Sie müssen das Ereignis ::input
wie in der folgenden Anweisung angeben:
Immer wenn der Benutzer etwas in das Textfeld eingibt, wird die Eigenschaft modelvalue
aktualisiert. Daher sind Elementattributwert und Eigenschaftswert synchron.
Code-Snippet
Das folgende ist ein vollständiges funktionierendes und laufendes Beispiel:
Nicht-polymere Elemente (einfache HTML-Tags) müssen dem Polymer mitteilen, wann sie den Wert nach Ereignisnamen aktualisieren. Also Wert = {{Wert :: Ereignisname}} Für Texteingaben - & gt;
%Vor%Tags und Links polymer