手动销毁和重置元素?

Manually destroy and reset element?

聚合物 1.*

我有一个具有表单的自定义元素。此外,还有一些事件侦听器和自定义处理程序,我在表单的不同部分都有状态。

当用户提交表单时,我可以在表单上执行 reset() 。但这不会重置我的自定义逻辑处理程序中的状态。

用户提交表单后,I 元素需要重置为默认值。最干净的方法是销毁模板并重新标记。我不想手动编码和重置每个对象 property/variable 状态。

我不能使用 <template is="dom-if" if="{{condition}}" reset>,因为它只能在嵌套模板中使用...这意味着 states/variables/objects 对父模板有效。

有什么方法可以破坏模板并重新标记它吗?性能损失在这里不是问题。

我建议你做的是用自定义元素包装你的表单。因此,例如,您创建名为 my-form 的元素并将 iron-form 和所有输入放入其中。在您的 my-form 元素中,您需要适当地将事件传播给父级,这不是问题,因为有 fire() 函数,您可以在父级中调用 my-formaddEventListener元素。

所以在 my-form 中你会监听 iron-form onSubmit 然后调用 this.fire("formSubmitted"); 并且在父元素里面(例如)就绪函数:

this.addEventListener("formSubmitted", function() {
  Polymer.dom(this.root).removeChild(this.$$("my-form"));
  Polymer.dom(this.root).appendChild(document.createElement("my-form");
}.bind(this));

就是这样。我希望我理解你的问题。