简体   繁体   English

铁形式的addEventListener为null

[英]iron-form addEventListener of null

in relation to an already asked question here 关于这里已经问过的问题

But that question never got answered. 但是这个问题从未得到回答。

I am trying to addEventListener on an iron-form like: 我正在尝试在铁窗体上添加eventListener:

my HTML imports: 我的HTML导入:

<link rel="import" href="/bower_components/polymer/polymer.html">
<link rel="import" href="/bower_components/iron-ajax/iron-ajax.html">

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

the form: 表格:

<form is="iron-form" method="get" action="/" id="eventsDemo">
        <paper-input name="name" label="Name" required auto-validate></paper-input>
        <paper-input name="password" label="Password" type="password" required auto-validate></paper-input>
        <paper-checkbox name="read" required>You must check this box</paper-checkbox>
        <br>
        <paper-button raised onclick="_delayedSubmit(event)" disabled id="eventsDemoSubmit">
            <paper-spinner id="spinner" hidden></paper-spinner>
            Submit
        </paper-button>
        <paper-button raised onclick="_reset(event)">Reset</paper-button>
        <div class="output"></div>
    </form>

and the listener: 和听众:

document.getElementById('eventsDemo').addEventListener('iron-form-submit', function (event) {

    });

But that gets me the error aswell - 但这也给我带来了错误-

Uncaught TypeError: Cannot read property 'addEventListener' of null 未捕获的TypeError:无法读取null的属性'addEventListener'

I already tried some suggestions with window.onload, or WebComponentsReady. 我已经使用window.onload或WebComponentsReady尝试了一些建议。 Nothing helped. 没有任何帮助。

也许您缺少}或Bower安装

I found the solution: 我找到了解决方案:

i defined the addEventListener on the wrong place and it needs to be with the shadowRoot in the connectedCallback(). 我在错误的地方定义了addEventListener,它需要与connectedCallback()中的shadowRoot一起使用。

 class UserApp extends Polymer.Element {
        static get is() {
            return 'user-app';
        }

        connectedCallback() {
            super.connectedCallback();

            let eventsDemo = this.shadowRoot.getElementById('eventsDemo');
            let eventsDemoSubmit = this.shadowRoot.getElementById('eventsDemoSubmit');

            eventsDemo.addEventListener('iron-form-submit', function (event) {
                console.log("iron form submit");

                eventsDemoSubmit.disabled = false;
                this.querySelector('.output').innerHTML = JSON.stringify(event.detail);
            });

            eventsDemo.addEventListener('change', function (event) {

                eventsDemoSubmit.disabled = !eventsDemo.validate;
            });
        }

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

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