2015-04-01 64 views
2

我試圖用如何動態地創建一個聚合物構件

var toast = document.createElement('paper-toast'); 

,成功地創建的元素,用javascript建立一個paper-toast元素,我再設置一些屬性後,將它添加到身體。

document.body.appendChild(toast); 

這也適用,元素顯示在DevTools中。但是,當我嘗試調用

toast.show(); 

推遲甚至當(使用的setTimeout(1)),它與不確定的錯誤不是一個函數,由於沒有它應該根據功能性新創建的元素documentation

我該如何使用元素的show方法?它不必動態創建,我只需要能夠完全改變內容,這似乎是一個簡單的解決方案。

+1

你輸入元素的定義是什麼?您可以創建任意元素,但在升級之前不會有特殊的方法。如果你可以創建一個更全面的例子,它會更容易幫助。否則,我只會猜測一個解決方案。 – 2015-04-01 01:10:56

+0

哦,我沒有。這解決了它。謝謝! – timedt 2015-04-01 08:56:36

+0

啊哈!很高興我能幫上忙。我發佈了一個可用於檢測缺少導入的方便書籤的答案。 – 2015-04-01 16:45:29

回答

1

確保使用html導入導入元素定義。

<link rel="import" href="components/paper-toast/paper-toast.html"> 

當您有很多自定義元素時,很難判斷哪些元素缺少導入。你可以使用這個書籤,以檢測進口失蹤

https://gist.github.com/ebidel/cea24a0c4fdcda8f8af2

javascript:(function()%7Bfunction%20isUnregisteredCustomElement(el)%7Bif(el.constructor==HTMLElement)%7Bconsole.error('Found%20unregistered%20custom%20element:',el);return%20true;%7Dreturn%20false;%7Dfunction%20isCustomEl(el)%7Breturn%20el.localName.indexOf('-')!=-1%7C%7Cel.getAttribute('is');%7Dvar%20allCustomElements=document.querySelectorAll('html%20/deep/%20*');allCustomElements=Array.prototype.slice.call(allCustomElements).filter(function(el)%7Breturn%20isCustomEl(el);%7D);var%20foundSome=false;for(var%20i=0,el;el=allCustomElements[i];++i)%7Bif(isUnregisteredCustomElement(el))%7BfoundSome=true;%7D%7Dif(foundSome)%7Balert('Oops:%20found%20one%20or%20more%20unregistered%20custom%20elements%20in%20use!%20Check%20the%20console.');%7Delse%7Balert('Good:%20All%20custom%20elements%20are%20registered%20:)');%7D%7D)();