Wie funktioniert die Datenbindung in Polymer?

8
%Vor%

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}} ?

    
batman 25.05.2014, 23:51
quelle

4 Antworten

3

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 die value Eigenschaft ändert, ändere das Attribut value 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 :

Ссылка Ссылка

    
ebidel 26.05.2014, 03:24
quelle
6

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:

%Vor%     
CletusW 26.05.2014 23:14
quelle
4

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:

%Vor%

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:

%Vor%
    
Donato Pirozzi 28.05.2016 09:51
quelle
0

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%     
Bahtiyar Özdere 13.11.2015 07:57
quelle

Tags und Links