手动销毁和重置元素?

时间:2017-05-16 20:01:32

标签: polymer polymer-1.0

聚合物1。*

我有一个包含表单的自定义元素。另外,我在表单的不同部分有一些事件监听器和自定义处理程序。

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

用户提交表单后,I元素需要重置为默认值。最简洁的方法是销毁模板并重新盖章。我不想手动编码和重置每个对象属性/变量状态。

我不能使用<template is="dom-if" if="{{condition}}" reset>,因为它只能在嵌套模板中使用...这意味着状态/变量/对象对父模板保持不变。

有没有办法可以销毁模板并对其进行修改?性能受到影响不是问题。

1 个答案:

答案 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));

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