我想在需要时添加模板的内容,并在不需要时将其删除。我的代码基于聚合物的dom-if实现
这是添加模板内容的代码
if (!this.ctor) {
this.templatize(this);
}
if (parentNode) {
const parent = Polymer.dom(parentNode);
if (!this._instance) {
this._instance = this.stamp();
const targetNode = parent.firstElementChild;
const newNode = this._instance.root;
parent.insertBefore(newNode, targetNode);
} else {
const children = this._instance._children;
if (children && children.length) {
const lastChild = Polymer.dom(this).previousSibling;
if (lastChild !== children[children.length - 1]) {
for (let i = 0, node; i < children.length && (node = children[i]); i++) {
parent.insertBefore(node, this);
}
}
}
}
}
这是删除模板内容的代码:
if (this._instance) {
const children = this._instance._children;
if (children && children.length) {
const parent = Polymer.dom(Polymer.dom(children[0]).parentNode);
for (let i = 0, n; i < children.length && (n = children[i]); i++) {
parent.removeChild(n);
}
}
if(this.restamp) {
this._instance = null;
}
}
因此,如果我将restamp属性设置为true,则一切正常。但是,如果我将其设置为false,则不会显示某些内容。
dom重复模板的内容不会插入上面的代码中
parent.insertBefore(node, this);
因为节点仅包含#document-fragments,但不包含由dom-repeat插入的内容。
我尝试达到正确的内容,但失败了。即使包含dom-repeat,dom-if等内容,也可以插入正确的内容吗?
谢谢