我的聚合物成分中有以下模板
<polymer-element name="my-element" attributes="show">
<template if={{show}}>
<select id="conditional-select">
</select>
</template>
<script>
Polymer({
showChanged: function () {
console.log(this.$['conditional-select']); //undefined
setTimeout(function(){
console.log(this.$['conditional-select']); //got it!
},1000)
}
})
</script>
</polymer-element>
为什么显示的第一个控制台输出始终undefined
已更改?
我明白,DOM元素尚未在showChanged
内呈现,但如何正确等待呢?
答案 0 :(得分:0)
看起来填充this.$
需要花费一点时间,因此showChanged
中的更改会为我工作
showChanged: function () {
this.async(function() {
console.log(this.$['conditional-select']); //undefined
console.log(this.shadowRoot
.querySelector('#conditional-select')); //got it!!
}.bind(this));
}