Codice
Si consideri il seguente elemento personalizzato Polimero:Polymer 1.0: collegamenti a due vie con gli elementi di input
<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>
Io uso questo elemento personalizzato nel mio index.html come segue:
<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>
domanda
Credo di aver dichiarato la proprietà value
come associazione a due vie (notify: true
); tuttavia, quando faccio clic sull'input e digito del testo (ad esempio, "foo"
), non si riflette nel modello (ad esempio, una chiamata a document.querySelector('test-element').value
restituisce il valore impostato in index.html, "test"
). È interessante notare che l'attributo value
dell'input cambia correttamente, ma la proprietà value del mio test-elemento no. Cosa mi manca?
Devo anche notare che una chiamata a document.querySelector('test-element').setAttribute('value', 'bar')
funziona correttamente.
Grazie. La distinzione interno/esterno ora ha senso per me. Ho richiesto una modifica aggiungendo un collegamento alla documentazione. –
Vorrei solo sottolineare una sfumatura [Scott Miles] (http://stackoverflow.com/users/2192324/scott-miles) in quanto il campo 'readOnly' nella dichiarazione di proprietà non governa solo la proprietà comportamento rispetto agli elementi esterni al DOM locale, ma anche elementi all'interno del DOM locale. IOW, se imposto una proprietà come sola lettura è di sola lettura per i bambini e gli antenati. –
Giusto per essere chiari, questo non vuol dire che le proprietà di sola lettura non siano mai modificabili; una proprietà di sola lettura _è modificabile_ tramite un metodo setter speciale, ma per quanto posso vedere non è attraverso l'uso dell'API di associazione dati. –