2016-12-14 14 views
0

Polymerのカルーセルに2つの子ノードを追加しようとしています。これは、Chromeで正常に動作しますが、私はSafariで次のコンソールエラーが表示されます。動的に作成された要素の選択Polymer 1.0 Safari

TypeError: null is not an object (evaluating 'this.$$('#' + this.slideId1 + '').appendChild')

SafariでIDによって動的に作成したノードを選択する方法はありますか?

私は現在使用中です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

を作成する必要がある場合がありますので

Polymer.dom(this.root).querySelectorAll("#paperSlider").appendChild(this.slide); 

はのappendChildノードを期待していることを忘れないでくださいあなたはすでに 'this。$$ 'でノードを正しく照会しています'。問題は、ノードを照会するときにノードがDOMにまだアタッチされていないことが原因である可能性があります。 '_appendNode'が' slideId'ノードをDOMに追加するのと同じ関数で呼び出された場合、次のレンダリングまでクエリを延期するべきです。 – tony19

+0

最初の追加の完了を確認するためにどのようなデザインパターンを使用しますか? – KVNA

+0

「最初の追加」とはどういう意味ですか? '_appendNode'への最初の呼び出し?または '_appendNode'の最初の' appendChild'ですか? 'slideId1'をDOMに追加するのは何ですか? – tony19

答えて

1

あなたが使用してみました:あなたのケースでは

Polymer.dom(this.root).querySelectorAll("paper-card"); 

を:あなたは一つの第一

var mypaperSlider = Polymer.dom(this.root).querySelector('#paperSlider'); 
var slide = document.createElement('paper-slide'); 
Polymer.dom(this.root).querySelectorAll("#paperSlider").appendChild(slide); 
関連する問題