2016-04-06 8 views
1

templates/module.hbsWie erhalten Emberjs Formularwerte in einem Objekt?

<form class="" method="post" {{ action "step1" on="submit"}}> 
{{input type="email" value=email}} 
{{input type="checkbox" checked=permission}} 
{{input type="submit" value="next"}} 
</form> 

Wie kann ich E-Mails und Checkbox Wert in einem Objekt erreichen (wie model.email und Modell Checkbox) in Route

Routen/Modul. js

export default Ember.Route.extend({ 
model() { 
    return this.store.createRecord('wizard'); 
}, 
actions: { 
    step1(){ 
    alert(this.controller.get('model.email')); // returns undefined 
    // get form values like model.email model.checkbox 
    }, 
} 

Modelle/wizard.js

export default DS.Model.extend({ 
    email: DS.attr('string'), 
    permission: DS.attr('boolean') 
}); 

Update: [[Benachrichtigungen kehrt undefiniert]]

Antwort

3

Zuerst Modell erstellen haben. sagen wir, Sie user

//routes/module.js 
export default Ember.Route.extend({ 
    model() { 
    return this.store.createRecord('wizard'); 
    }, 
    actions: { 
    step1(){ 
    this.controller.get('model.email')// you will get email value here. 
    // get form values like model.email model.checkbox 
    } 
} 

dann in Vorlage auf Modell arbeiten Sie im gleichen Format

//templates/module.hbs 
<form class="" method="post" {{ action "step1" on="submit"}}> 
{{input type="email" value=model.email}} 
{{input type="checkbox" checked=permission}} 
{{input type="submit" value="next"}} 
</form> 
+0

Ich habe meine Frage mit Ihren Daten aktualisiert, aber es geht weiter (Version 2.4.4 des Embers) – Onur

+0

Ich vergesse model.email in der Vorlage behoben! Vielen Dank – Onur

0

Bei verwenden wollen Sie kein Modell für die einfachste Anforderung verwendet werden, Sie können die Methode serialize von jQuery verwenden.

btnQueryClicked() { 
    const $form = $('.bar-query-query'); 
    const params = $form.serializeArray(); 

    // convert parameters to dictionary 
    const paramsDict = {}; 
    params.forEach((param) => { 
    paramsDict[param['name']] = param['value']; 
    }); 

    $.post('/query', paramsDict) 
    .done((data) => { 
     console.log(data); 
    }); 
}, 

-Code oben ist, was ich benutze nur eine einfache Abfrage-Anforderung für die Datenanzeige Zweck zu machen. (Es ist nicht so Elegent, aber Sie bekommen die Idee)

Es ist zu schwer für mich, ein Modell nur für eine einfache Anfrage zu erstellen, die sowieso nicht persistent sein muss.

Verwandte Themen