2016-09-30 103 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 :( –