-Code
das folgende Polymer benutzerdefinierte Element Bedenken Sie:Polymer 1.0: Zwei-Wege-Bindungen mit Eingabeelementen
<dom-module id="test-element">
<template>
<input type="text" value="{{value}}">
<button>Reset</button>
</template>
<script>
Polymer({
is: 'test-element',
properties: {
'value': {
type: String,
reflectToAttribute: true,
notify: true,
value: null
}
}
});
</script>
</dom-module>
ich dieses benutzerdefinierte Element in meiner index.html wie folgt verwenden:
<html>
<head>
<script type="text/javascript" src="bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="test-element.html">
<title>Test App</title>
</head>
<body>
<test-element value="test"></test-element>
</body>
</html>
Frage
Ich glaube, ich habe die value
Eigenschaft als eine Zwei-Wege-Bindung (notify: true
) erklärt; Wenn ich jedoch auf die Eingabe klicke und einen Text eintippe (z. B. "foo"
), wird sie nicht im Modell wiedergegeben (d. h. ein Aufruf an document.querySelector('test-element').value
gibt den Wert zurück, den ich in index.html, "test"
, eingegeben habe). Interessanterweise ändert sich das value
Attribut der Eingabe korrekt, aber die value -Eigenschaft meines Testelements nicht. Was vermisse ich?
Ich sollte auch beachten, dass ein Anruf an document.querySelector('test-element').setAttribute('value', 'bar')
funktioniert ordnungsgemäß.
Danke. Die Unterscheidung von Innen und Außen macht jetzt Sinn für mich. Ich habe eine Änderung angefordert, indem ich einen Link zur Dokumentation hinzugefügt habe. –
Ich möchte nur eine Nuance [Scott Miles] (http://stackoverflow.com/users/2192324/scott-miles) darauf hinweisen, dass das 'readOnly'-Feld in der Property-Deklaration nicht nur die Eigenschaften der Property bestimmt Verhalten in Bezug auf Elemente außerhalb des lokalen DOM, aber auch Elemente innerhalb des lokalen DOM. IOW, wenn ich eine Eigenschaft als schreibgeschützt festlegen, ist es schreibgeschützt für sowohl Kinder als auch Vorfahren. –
Nur um klar zu sein, das bedeutet nicht, dass schreibgeschützte Eigenschaften niemals modifizierbar sind; Eine schreibgeschützte Eigenschaft ist über eine spezielle Setter-Methode modifizierbar, aber soweit ich sehen kann, ist dies nicht durch die Verwendung der Datenbindungs-API möglich. –