我想知道如何在通过 jQuery 或虚拟 DOM 创建后修改 Polymer 1.0 标签。
我正在尝试使用 Mithril.js 的 Polymer 1.0。Polymer 0.5.5 具有 Shadow DOM,其标签文字和内部结构(在 Chrome 的检查器上)几乎相同。但是 1.0 使用了 shady DOM,它作为 HTML 模板工作。
资源:
<paper-element>hello world</paper-element>
聚合物 0.5.5 检查员的结果:
<paper-button role="button" tabindex="0">hello world</paper-button>
检查员的聚合物 1.0 结果:
<paper-button role="button" tabindex="0" aria-disabled="false" class="x-scope paper-button-0">
<paper-ripple class="style-scope paper-button">
<div id="background" class="style-scope paper-ripple"></div>
<div id="waves" class="style-scope paper-ripple"></div>
</paper-ripple>
<paper-material animated="" class="content style-scope paper-button x-scope paper-material-0" elevation="0">
hello world
</paper-material>
</paper-button>
例如,像这样执行 jQuery 命令:
$("paper-element").text("new label");
它适用于 0.5.5(它显示正确的标签),但会破坏 1.0(内部标签已经变成了只是标签)。这种新行为不利于通过其他 DOM 操作库操作 Polymer 的自定义标签(起初,我在玩 Mithril.js 时遇到了这个问题)。而且我找不到任何 API 来重新初始化内部标签。
有没有什么好的解决方案可以在创建后修改 Polymer 1.0 标签以支持虚拟 DOM 或 jQuery?
更新(2015 年 6 月 3 日)
我从Polymer 文档中找到了解决方案。添加以下代码段后,Polymer 1.0 可以在 Mithril 虚拟 DOM 上工作:
<script>
window.Polymer = window.Polymer || {};
window.Polymer.dom = 'shadow';
</script>
通过此设置,Polymer 开始使用 Shadow DOM 而不是默认的 Shady DOM。它与 Polymer 0.5.5 和 JavaScript DOM API 一样友好。感谢你们!