2016-12-14 133 views
0

我想將兩個子節點追加到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> 
+0

您已經使用'this。$$正確查詢了節點'。問題可能在於查詢時節點尚未附加到DOM。如果在將'slideId'節點添加到DOM的相同函數中調用'_appendNode',則應該將查詢推遲到下一個渲染。 – tony19

+0

我明白了......你會用什麼樣的設計模式來驗證第一次追加的完成? – KVNA

+0

「第一次追加」是什麼意思?第一次調用'_appendNode'?或者'_appendNode'中的第一個'appendChild'?什麼將「slideId1」添加到DOM? – tony19

回答

1

您是否嘗試過使用:

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);