简体   繁体   English

我如何从铁表单获取表单数据以在视图中输出

[英]How do I get form data from iron-form to be output in view

I am new to Polymer 2 and ES6. 我是Polymer 2和ES6的新手。 I can console.log data that is input into the iron-form. 我可以console.log输入到铁窗体中的数据。 However, I can't output it to the screen. 但是,我无法将其输出到屏幕。 I thought this line would achieve the goal: 我认为这条线可以实现目标:

this.querySelector('.output').innerHTML = JSON.stringify(this.$.pizzaOrder.favoritePizza);

However, that gives me the error: Uncaught TypeError: Cannot set property 'innerHTML' of null. 但是,这给了我错误:Uncaught TypeError:无法将属性'innerHTML'设置为null。 Here is the full code of my custom element, my-form: 这是我的自定义元素my-form的完整代码:

<link rel="import" href="bower_components/polymer/polymer-element.html">
<link rel="import" href="bower_components/paper-input/paper-input.html">
<link rel="import" href="bower_components/iron-form/iron-form.html">
<link rel="import" href="bower_components/paper-checkbox/paper-checkbox.html">
<link rel="import" href="bower_components/paper-button/paper-button.html">

<dom-module id="my-form">
    <template>
        <iron-form id="pizzaOrder">
            <form action="/foo" method="get">
                Topping?
                <input type="text" id="favoritePizza" name="favoritePizza" value="favoritePizza" required></input>
                <br> Extra cheese?
                <input type="checkbox" id="cheese" name="cheese" value="cheese" checked></input>
                <br> Size?
                    <input type="radio" id="small" name="size" value="small"> Small </input>
                    <br>
                    <input type="radio" id="medium" name="size" value="medium"> Medium </input>
                    <br>
                    <input type="radio" id="large" name="size" value="large" checked> Large </input>
                <br>
                Delivery <paper-checkbox id="delivery" name="delivery" checked></paper-checkbox>
                <!--When you click, 'this.' is added to what you set equal to on-click-->
                <paper-button raised on-click="_submitForm">Submit</paper-button>
            </form>
        </iron-form>
        <h4>Your pizza is as follows:</h4>
        <div class="output"></div>
    </template>
    <script>
        /**
         * `sample-polymer`
         * sample
         *
         * @customElement
         * @polymer
         * @demo demo/index.html
         */
        class MyForm extends Polymer.Element {
            static get is() { return 'my-form'; }
            static get properties() {
                return {
                    favoritePizza: {
                        type: String,
                        notify: true
                    },
                    cheese: {
                        type: Boolean,
                        notify: true
                    },
                    size: {
                        type: String,
                        notify: true
                    },
                    delivery: {
                        type: Boolean,
                        notify: true
                    },
                    response: {
                        type: Object
                    },
                    pizzaOrder: {
                        type: Object
                    }
                };
            }
            _handleInput(event) {
            }
            _submitForm(event) {
                console.log("Form submitted");
                console.log(this.$.pizzaOrder.serializeForm());
                this.querySelector('.output').innerHTML = JSON.stringify(this.$.pizzaOrder.favoritePizza);
            }
        }
        window.customElements.define(MyForm.is, MyForm);
    </script>
</dom-module>`

Remove action="/foo" method="get" from your <form> tag. <form>标记中删除action="/foo" method="get" Then console.log(this.$.pizzaOrder.serializeForm()); 然后console.log(this.$.pizzaOrder.serializeForm()); prints your object (you don't need the second console). 打印对象(不需要第二个控制台)。 Use an <iron-ajax> element to submit the form. 使用<iron-ajax>元素提交表单。

See this pen: https://codepen.io/johnthad/pen/ddjPeZ?editors=1001 看到这支笔: https : //codepen.io/johnthad/pen/ddjPeZ?editors=1001

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM