я получаю сообщение об ошибке: 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);