2016-09-30 147 views
0

我對聚合物非常(非常)新,我試圖創建我的第一個組件。 我創建了一個Plunker,但由於某種原因它不工作:http://plnkr.co/edit/RbcBuO9y8SUHyKqe7OJA聚合物設置屬性Javascript錯誤

無論如何,你可以在那裏看到我的代碼。

它有一個組件blob-component.html,它非常基本。它只是標籤和標籤的內容。

在index.html上,我想單擊按鈕時更新這兩個。

在Plunker中,組件並沒有解析組件,所以我們只能得到innerHTML的顯示,但是當我在開發環境中運行這個組件時,我確實得到了標籤顯示(定義爲兩次)。

然而,當我嘗試將其設置按鈕的點擊,我得到一個錯誤:

未處理異常http://localhost:50169/Content/WebComponents/Polymer/webcomponentsjs/webcomponents.js 80070057 - JavaScript的運行時錯誤:無效的參數。

這在

unsafeUnwrap(this).data = value; 

發生如果我把在一個斷點,那麼我可以看到

是一個定義的對象和

È =「更新標籤初始標籤「

正如你所看到的,我也嘗試過使用setAttrib ute()而不是隻分配值,但我得到同樣的問題。

這顯然超級簡單,但我不明白爲什麼會發生。

這是在IE11中。在Chrome中,我沒有收到錯誤,但是當我點擊按鈕時標籤消失。

有什麼建議嗎?謝謝。

+0

也許這個例子可以幫助:HTTP:// plnkr.co/edit/m8XoJy?p =預覽 –

+0

謝謝,這真的很有幫助,但我試圖從容器頁面更新組件的值。我想相當於從index.html中設置my-parrent組件的「min」屬性? – user176504

+0

我沒有IE瀏覽器,但我重構了一下你的例子,這可能有所幫助:http://plnkr.co/edit/g8VgTMmlPTVzRXnderpE – adaliszk

回答

1

你的例子有兩個問題。我試圖這是Chrome,但也應該修復其他瀏覽器。

首先你應該注意到你的polymer.html導入失敗,因爲CORS。在plunker,jsbin等可以使用,當你改變innerHTML發生polygit

http://polygit.org/components/polymer/polymer.html 

第二個問題。當使用Shady DOM(默認值)時,通過設置innerHTML屬性,您只需刪除您在<dom-module>內聲明的任何內容。在Chrome中,您可以通過強制Shadow DOM來解決此問題,但在Firefox/IE/Safari中仍然無法正常工作。

現在你應該避免完全替換內部HTML,要麼使用DOM節點到節點或包裹你標籤內容與額外的容器中工作:

<blob-component id="p"> 
    <div> 
    Flip 
    </div> 
</blob-component> 

<script> 
    function changeLabels() { 
    var blob = document.getElementById("p"); 
    blob.querySelector('div').innerHTML = "Flop"; 
    } 
</script> 
+1

哦,男人,我以爲我正在聰明檢查我是否可以改變內容!修復它,非常感謝您的幫助! – user176504

+0

你知道嗎,它通常應該工作。但是,然後,Shady DOM :( –