Mein Endziel ist HTML nicht so schreiben hat:Ist es möglich, ein Polymer-Element ohne HTML zu erstellen?
<div id='counter'>
{{counter}}
</div>
<div>
<button
id="startButton"
on-click="{{start}}">
Start
</button>
<button
id="stopButton"
on-click="{{stop}}">
Stop
</button>
<button
id="resetButton"
on-click="{{reset}}">
Reset
</button>
</div>
Ich würde gerne wissen, ob es möglich ist, ohne die Verwendung von HTML ein Polymer-Elemente zu erstellen. Zum Beispiel habe ich versucht, dies:
@CustomTag('tute-stopwatch')
class TuteStopWatch extends PolymerElement {
ButtonElement startButton,
stopButton,
resetButton;
@observable String counter = '00:00';
TuteStopWatch.created() : super.created() {
createShadowRoot()..children = [
new DivElement()..text = '{{counter}}',
new DivElement()..children = [
startButton = new ButtonElement()..text = 'Start'
..onClick.listen(start),
stopButton = new ButtonElement()..text = 'Stop'
..onClick.listen(stop),
resetButton = new ButtonElement()..text = 'Reset'
..onClick.listen(reset)
]
];
}
}
vorheriger Code erstellt richtig Wurzel HTML und Schatten, aber es ist die Bindung zwischen den @observable counter
und dem Text der DivElement
nicht zu erstellen.
Ich weiß, dass dies verursacht wird, weil ich versuche, die Schattenwurzel zu erstellen, nachdem das Element instanziiert/erstellt wurde. Damit ich die Vorlage des Elements an anderer Stelle erstellen kann, bevor die Vorlage mit ihrer Observablen gebunden wurde.
Ich denke, 'counterChanged (alt) {xxx}' würde auch funktionieren, nicht wahr? –
Ich weiß nicht, ist das eine Polymer-Funktion? Ich habe kein Polymer verwendet. Ich habe gerade benutzerdefinierte Elemente verwendet, und das beobachtbare Paket, da dies bedeutet, dass ich nur die kleinen benutzerdefinierten Elemente Polyfill, anstatt alle Schatten dom, und HTML-Import-Zeug brauche. –
Es ist eine beobachtbare Funktion. Wenn ein "@ beobachtbares" oder "@ published" Feld "xxx" modifiziert wird, wird "xxxChanged (oldVal)" aufgerufen. –