Javascript Polymer 1.0和外部DOM操作库

Javascript Polymer 1.0和外部DOM操作库,javascript,jquery,dom,polymer,mithril.js,Javascript,Jquery,Dom,Polymer,Mithril.js,我想知道如何在创建后通过jQuery或虚拟DOM修改Polymer 1.0标记 我正在用Mithril.js尝试Polymer 1.0。聚合物0.5.5具有阴影DOM,其标记文字和内部结构(在Chrome的inspector上)几乎相同。但是1.0使用了ShadyDOM,它可以作为HTML模板使用 资料来源: <paper-element>hello world</paper-element> 它适用于0.5.5(它显示正确的标签),但打破了1.0(内部标签变为仅标签)

我想知道如何在创建后通过jQuery或虚拟DOM修改Polymer 1.0标记

我正在用Mithril.js尝试Polymer 1.0。聚合物0.5.5具有阴影DOM,其标记文字和内部结构(在Chrome的inspector上)几乎相同。但是1.0使用了ShadyDOM,它可以作为HTML模板使用

资料来源:

<paper-element>hello world</paper-element>
它适用于0.5.5(它显示正确的标签),但打破了1.0(内部标签变为仅标签)。这种新行为不适合通过其他DOM操纵库操纵Polymer的自定义标记(起初,我在玩Mithril.js时遇到了这个问题)。我找不到任何API来重新初始化内部标记

在创建后修改Polymer 1.0标记以支持虚拟DOM或jQuery,有什么好的解决方案吗

更新(2015年6月3日)

我从中找到了解决办法。添加以下代码段后,Polymer 1.0可以在Mithril virtual DOM上工作:

<script>
    window.Polymer = window.Polymer || {};
    window.Polymer.dom = 'shadow';
</script>

window.Polymer=window.Polymer |{};
window.Polymer.dom='shadow';

根据此设置,Polymer开始使用阴影DOM而不是默认的阴影DOM。它与Polymer 0.5.5和JavaScript DOM API一样友好。谢谢你们

理想情况下,
paper按钮
会公开一个属性或方法来修改内容,但是不会列出类似的内容

幸运的是,它仍然是HTML,可以使用。在上,我选择了Chrome Inspector中的一个按钮,并运行以下代码来更新按钮的内容:

$0.querySelector('paper-material').innerHTML = 'testing';

在Chrome控制台中,
$0
指的是Chrome Elements Inspector中当前选择的元素,在这种情况下,
纸张按钮
元素之一。

像Polymer collection中的Web组件很难定制和动态填充。shadowdom的特性使其不受外部影响,我认为这是web组件的一个关键限制


但是,可以将这些元素重构为Mithril组件以允许自定义控制。在名称上和名称下,有一系列由Mithril制造的材料设计元素。

是的,您的解决方案运行良好。但它说我们必须为每个纸张元素实现特殊的组件:(我试过“纸盒面板”同样,它也有完全不同的结构。这听起来是一个很好的机会来升级纸质元素本身!正如你所看到的,这肯定是有必要的,而且目前需要每个组件的知识,所以我认为一个API在组件集中一致地应用会很好。如果我是你,我会提交它作为一个新问题,我认为说web组件不受外部影响是不诚实的,因为我对这个问题的回答清楚地表明了一个可以穿透影子DOM的工作解决方案。但是,我认为您可以更准确地说,web组件的性质需要了解组件的内部工作知识,或者组件必须为内部访问提供一个良好的API。但是,我会称之为功能。将Polymer的dom设置为“shadow”并不能解决当shadow元素更新并更改为dom元素时会遇到的重画问题。shadow dom和Mithril不能很好地协同工作,我想这对所有虚拟dom库都很重要瑞斯。
$("paper-element").text("new label");
<script>
    window.Polymer = window.Polymer || {};
    window.Polymer.dom = 'shadow';
</script>
$0.querySelector('paper-material').innerHTML = 'testing';