聚合物1。*
我有一个包含表单的自定义元素。另外,我在表单的不同部分有一些事件监听器和自定义处理程序。
当用户提交表单时,我可以在表单上执行reset()。但这并没有重置我的自定义逻辑处理程序内的状态。
用户提交表单后,I元素需要重置为默认值。最简洁的方法是销毁模板并重新盖章。我不想手动编码和重置每个对象属性/变量状态。
我不能使用<template is="dom-if" if="{{condition}}" reset>
,因为它只能在嵌套模板中使用...这意味着状态/变量/对象对父模板保持不变。
有没有办法可以销毁模板并对其进行修改?性能受到影响不是问题。
答案 0 :(得分:1)
我建议你做的是用自定义元素包装你的表单。例如,您创建一个名为my-form
的元素,并将iron-form
和所有输入放在其中。在您的my-form
元素中,您需要将事件传播到父级,这不是问题,因为您可以在fire()
和my-form
中调用addEventListener
函数在父元素中。
因此,在my-form中,您将收听iron-form
onSubmit
,然后调用this.fire("formSubmitted");
并在父元素内(例如)ready函数:
this.addEventListener("formSubmitted", function() {
Polymer.dom(this.root).removeChild(this.$$("my-form"));
Polymer.dom(this.root).appendChild(document.createElement("my-form");
}.bind(this));
就是这样。我希望我理解你的问题。