异步插入包含自定义元素的内容
Inserting content containing Custom Elements asynchronously
已经有了这个问题和这个问题,但尽管这两个问题都会引发相同的错误,但它们的解决方案和原因并不相同。我有一个标签,它在应用程序的整个生命周期中异步加载内容。此内容又包含导致错误的自定义元素。以下是重现此错误的最简单的测试用例(假设Polymer安装了bower,否则导入看起来会略有不同):
base.html
<link rel="import" href="bower_components/polymer/polymer.html">
<link href="asynchronousTag.html" rel="import">
<asynchronous-tag></asynchronous-tag>
asynchronousTag.html
<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/core-tooltip/core-tooltip.html">
<polymer-element name="asynchronous-tag">
<template>
<div id="text"></div>
</template>
<script>
Polymer({
ready:function(){
var that = this;
setTimeout(function(){
that.$.text.innerHTML =
'<core-tooltip label="testing">tester</core-tooltip>';
}, 2500);
}
});
</script>
</polymer-element>
触发错误
核心工具提示上的属性是聚合物升级元素之前的数据绑定。这可能会导致不正确的绑定类型。
尽管工作如预期。当<core-tooltip>
为无属性时也会发生同样的情况。然而,当使用插入同一节点时,不会发生
var ct = document.createElement("core-tooltip");
ct.innerHTML = "html";
ct.setAttribute("label","text");
that.$.text.appendChild(ct);
然而,遗憾的是,这对我没有太大帮助,因为我的内容是一个完整的HTML字符串。
我之所以担心这一点,是因为有问题的函数的性能低于标准,所以我希望解决导致错误的问题可能会改善这一点(除了我不希望在控制台上显示任何错误之外)。
写完问题后,我在浏览Polymer邮件组时发现了这封邮件。据说
然而,
Element.innerHTML
没有触发生命周期回调,也没有升级。
换句话说,解决方案是
var div = document.createElement("div");
div.innerHTML = '<core-tooltip>tester</core-tooltip>';
that.$.text.appendChild(div.childNodes[0]);
是的,这毫无意义。。。这就是为什么我要和全世界分享它。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 使用带有.net autopostback的ryanfait.com自定义表单元素
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- 自定义HTML元素属性未显示-Web组件
- 在验证器中添加自定义规则以检查<ul>具有元素
- <的自定义进度条;音频>并且<进度>HTML5元素
- HTML5-画布元素&自定义光标
- 如何使用javascript独立地为聚合物自定义元素的每个实例的lightdom设置样式
- 注册后是否可以定义HTML5自定义元素中的生命周期回调
- 如何使用其他自定义指令中的元素标记作为另一个自定义指令的模板
- 使用html 5对元素执行自定义表单验证功能
- 如何在 Aurelia(奥雷利亚)中访问自定义元素中的变量
- Javascript 向影子根中的自定义元素添加函数
- 在自定义元素中扩展 HTMLCanvasElement 问题
- 如何将 DOM 元素绑定到自定义 $.touchpress 事件
- 通过应用自定义 css 类禁用 html 输入元素
- 聚合物 - 访问自定义元素内的 DOM 输入元素
- HTML选择元素-自定义默认值?(跨浏览器解决方案)
- 元素.自定义指令'中的replaceWith链接只在第一次调用时起作用
- 如何使用jQuery添加ul元素自定义事件