Polymer 克隆聚合物元素的正确方法是什么?
我一直在尝试克隆聚合元素——通常是从某种类型的数据创建的元素,因此不能选择仅使用构造函数或Polymer 克隆聚合物元素的正确方法是什么?,polymer,Polymer,我一直在尝试克隆聚合元素——通常是从某种类型的数据创建的元素,因此不能选择仅使用构造函数或document.createElement创建模板的新实例 element.cloneNode自身不工作,因为它不复制卷影根 lodash提议的似乎没有任何作用(克隆对象为空) cloneEl.shadowRoot.innerHTML=sourceEl.shadowRoot.innerHTML复制阴影根,但似乎丢失了绑定 广泛的例子: 有没有我找不到的Polymer.cloneNode函数?我终于找到
document.createElement
创建模板的新实例
自身不工作,因为它不复制卷影根element.cloneNode
提议的似乎没有任何作用(克隆对象为空)lodash
cloneEl.shadowRoot.innerHTML=sourceEl.shadowRoot.innerHTML代码>复制阴影根,但似乎丢失了绑定
有没有我找不到的
Polymer.cloneNode
函数?我终于找到了这个问题的答案(至少对于Polymer 1.0)
演示如何复制属性。
描述如何获取聚合物元素的属性列表
答案是:
newElement = element.cloneNode(true);
for(var i in element.properties) {
newElement[i] = element[i]
}
完整的图解和工作示例或在下面的代码片段中
聚合物克隆实例
{{boundvalue}}
聚合物({
是:“自定义元素”,
特性:{
边界值:{
类型:字符串,
值:“输入一些文本…”,
通知:正确
}
}
});
1将上述元素克隆到下面的列表中
2将上述元素克隆到下面的列表中,并复制属性
测试描述
修改上面的文本
单击按钮1
注意:下面添加了一个元素,但它被重置为原始文本(“输入一些文本…”)
点击按钮2
注意:下面添加了一个元素,它保留修改后的文本
还要验证功能是否仍然正常:修改副本中的输入,文本也会更新
克隆元素列表:
函数cloneElementWithProperties(){
list=document.querySelector(#list elements”);
sourceEl=document.querySelector(“源元素”)
cloneEl=sourceEl.cloneNode(真);
for(sourceEl.properties中的变量i){
cloneEl[i]=sourceEl[i];
}
list.insertBefore(cloneEl,null);
}
函数cloneElementWithoutProperties(){
list=document.querySelector(#list elements”);
sourceEl=document.querySelector(“源元素”)
cloneEl=sourceEl.cloneNode(真);
list.insertBefore(cloneEl,null);
}
这是我的克隆功能
var clone=函数(orig){
var ret=orig.cloneNode();
轻量化;
var-childNodes;
if(orig.is&&orig.is.toUpperCase()==orig.tagName){
lightDom=聚合物dom(ret);
childNodes=Polymer.dom(orig.childNodes);
}否则{
lightDom=ret;
childNodes=orig.childNodes;
}
对于(var i=0;i
我发现(至少在1.5中)cloneNode(true)创建了两个纸质复选框。有没有想过如何防止聚合物在复选框上两次起作用?我正在寻找一种可以克隆light DOM儿童的解决方案,但这种解决方案对我不起作用。