как отправить железную форму и получить значения железных входов? - PullRequest
0 голосов
/ 02 февраля 2019

я получаю сообщение об ошибке: Uncaught ReferenceError: form1 не определен в HTMLElement.onclick

, если я помещаю форму вне модуля dom, в теле index.html это работает, но как я могудоступ к форме внутри модуля projet-app?

index.html

<link rel="import" href="projet-app.html">
<style>
 body {
     margin: 0;
     width: 100%;
     height: 100%;
     font-family: sans-serif;
 }
</style>   </head>   <body>
<projet-app></projet-app>
   </body> </html>

projet-app.html

<projet-pouchdb name="projet-films"
          initsrc="films.json"
          films="{{elements}}"
          id="db">
</projet-pouchdb>

<app-header reveals effects="waterfall">
  <app-toolbar class="layout horizontal">
    <div class="projet-app-title">Webcomponents: liste de films et séries</div>
    <span class="flex"></span>
    <paper-button class="toolbar-button" on-tap="_supprimer">Supprimer le film</paper-button>
    <paper-button class="toolbar-button" on-tap="_ajout">Ajout</paper-button>
    <paper-button class="toolbar-button" on-tap="_reset">Reset</paper-button>
  </app-toolbar>
</app-header>

<container id="containerFilm" class="layout horizontal">
  <projet-film-list id films="{{elements}}"></projet-film-list>

  <div id="ajoutFilm">
    <iron-form  name="form1">
      <form method="get">
        <paper-input id="test" name="titreF" label="Titre du film" value="testbordel"></paper-input>
        <paper-input name ="createurF" label = "Créateur(s)"></paper-input>
        <paper-input name ="acteursF" label = "Acteurs"></paper-input>
        <paper-input name ="saisonsF" label = "Saison(s)"></paper-input>
        <paper-input name ="anneeF" label = "Année(s)"></paper-input>
        <paper-input name ="synopsisF" label = "synopsis"></paper-input>
      </form>
      <br>
      <div class="output"></div>
    </iron-form>
  </div>
  <paper-button raised onclick="form1.submit()" on-tap="_ajout">Submit</paper-button>

class ProjetApp extends Polymer.Element{
  static get is(){return "projet-app";}
  static get properties(){
    return{
      elements:{
        type: Array,
        notify: true
      }
    }
  }

  _supprimer() {this.$.db._supprimer_film();}

  //_supprimer() {this.$.db._supprimer_films();}

  _ajout() {
    form1.addEventListener('iron-form-submit', function(event) {
    this.querySelector('.output').innerHTML = JSON.stringify(event.detail);
    titreF=String(event.detail.titreF);
    createurF=String(event.detail.createurF);
    acteursF=String(event.detail.acteursF);
    saisonsF=String(event.detail.saisonsF);
    anneeF=String(event.detail.anneeF);
    synopsisF=String(event.detail.synopsisF);
    console.log("titreF"+titreF);
    console.log("createurF"+createurF);
    console.log("acteursF"+acteursF);
    console.log("saisonsF"+saisonsF);
    console.log("anneeF"+anneeF);
    console.log("synopsisF"+synopsisF);
    });
    this.$.db._ajout_films();
  }

  _reset() {this.$.db._reset_films();}

    ready(){
      super.ready();
      //console.log("ProjetApp ready");
   }
    constructor(){
       super();
       //console.log("ProjetApp created");
   }
  };
  customElements.define(ProjetApp.is,ProjetApp);   </script> </dom-module>

Как это исправить?Я думаю, это может быть проблема, связанная с теневым домом?

РЕДАКТИРОВАТЬ: проблема с этим кодом исправлена, благодаря behzad besharati

projet-app.html

<projet-pouchdb name="projet-films"
          initsrc="films.json"
          films="{{elements}}"
          id="db">
</projet-pouchdb>

<app-header reveals effects="waterfall">
  <app-toolbar class="layout horizontal">
    <div class="projet-app-title">Webcomponents: liste de films et séries</div>
    <span class="flex"></span>
    <paper-button class="toolbar-button" on-tap="_supprimer">Supprimer le film</paper-button>
    <paper-button class="toolbar-button" on-tap="_ajout">Ajout</paper-button>
    <paper-button class="toolbar-button" on-tap="_reset">Reset</paper-button>
  </app-toolbar>
</app-header>

<container id="containerFilm" class="layout horizontal">
  <projet-film-list id films="{{elements}}"></projet-film-list>

  <div id="ajoutFilm">
    <iron-form id="form1" name="form1">
      <form is="iron-form" method="get" action="/form/handler">
        <paper-input name="titreF" label="Titre du film" value="testitre" required></paper-input>
        <paper-input name ="createurF" label = "Créateur(s)"></paper-input>
        <paper-input name ="acteursF" label = "Acteurs"></paper-input>
        <paper-input name ="saisonsF" label = "Saison(s)"></paper-input>
        <paper-input name ="anneeF" label = "Année(s)"></paper-input>
        <paper-input name ="synopsisF" label = "synopsis"></paper-input>
      </form>
      <br>
      <div class="output" style="display:none;" width="100px;"></div>
    </iron-form>
    <paper-button on-tap="submitForm">Submit</paper-button>
  </div>

class ProjetApp extends Polymer.Element{
  static get is(){return "projet-app";}
  static get properties(){
    return{
      elements:{
        type: Array,
        notify: true
      }
    }
  }

  _supprimer() {this.$.db._supprimer_film();}

  //_supprimer() {this.$.db._supprimer_films();}

  _reset() {this.$.db._reset_films();}

  ready(){
    super.ready();
    //console.log("ProjetApp ready");
  }
  constructor(){
     super();
     //console.log("ProjetApp created");
  }

   submitForm(e) {
       this.$.form1.submit();
       this.$.form1.addEventListener('iron-form-submit', function(event) {
       this.querySelector('.output').innerHTML = JSON.stringify(event.detail);
       titreF=event.detail.titreF;
       createurF=event.detail.createurF;
       acteursF=event.detail.acteursF;
       saisonsF=event.detail.saisonsF;
       anneeF=event.detail.anneeF;
       synopsisF=event.detail.synopsisF;
     });
     if(titreF!=""){
       this.$.db._ajout_films();
       }
   }
  };
  customElements.define(ProjetApp.is,ProjetApp);

...