选择一个动态创建的元素聚合物1.0 Safari
问题描述:
我想将两个子节点追加到Polymer中的旋转木马上。这在Chrome中工作正常,但我得到以下控制台错误在Safari:选择一个动态创建的元素聚合物1.0 Safari
TypeError: null is not an object (evaluating
'this.$$('#' + this.slideId1 + '').appendChild'
)
有没有办法选择凭身份证在Safari中动态创建的节点?
我目前使用的是this.$$()
聚合物法。
<l2t-paper-slider id="paperSlider" total-slides="{{slides}}"></l2t-paper-slider>
<script>
Polymer({...
_appendNode: function() {
this.$$('#paperSlider').appendChild(this.slide);
this.$$('#' + this.slideId1 + '').appendChild(this.slideData);
}
});
</script>
答
您是否尝试过使用:
Polymer.dom(this.root).querySelectorAll("paper-card");
你的情况:
Polymer.dom(this.root).querySelectorAll("#paperSlider").appendChild(this.slide);
记住的appendChild需要一个节点,所以你可能需要先创建一个
var mypaperSlider = Polymer.dom(this.root).querySelector('#paperSlider');
var slide = document.createElement('paper-slide');
Polymer.dom(this.root).querySelectorAll("#paperSlider").appendChild(slide);
您已经使用'this。$$正确查询了节点'。问题可能在于查询时节点尚未附加到DOM。如果在将'slideId'节点添加到DOM的相同函数中调用'_appendNode',则应该将查询推迟到下一个渲染。 – tony19
我明白了......你会用什么样的设计模式来验证第一次追加的完成? – KVNA
“第一次追加”是什么意思?第一次调用'_appendNode'?或者'_appendNode'中的第一个'appendChild'?什么将“slideId1”添加到DOM? – tony19