6
我的最終目標是不用寫HTML這樣的:是否可以創建一個沒有Html的聚合物元素?
<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>
我想知道是否有可能不使用HTML創建一個聚合物元素。例如,我想這:
@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)
]
];
}
}
前面的代碼正確創建HTML和陰影根,但它並沒有創造@observable counter
和DivElement
的文本之間的結合。
我知道這是因爲我試圖在實例化/創建元素後創建影子根。所以我應該在模板綁定其可觀察值之前在其他位置創建元素的模板。
我猜'counterChanged(old){xxx}'也會起作用,不是嗎? –
我不知道,是聚合物的功能嗎?我沒有使用聚合物。我剛剛使用自定義元素和可觀察包,因爲這意味着我只需要小的自定義元素polyfill,而不是所有的影子dom和html導入的東西。 –
這是一個可觀察的功能。如果'@ observable'或'@ published'字段'xxx'被修改'xxxChanged(oldVal)'被調用。 –