2016-11-30 2 views
0

Dies scheint extrem trivial und ich fühle mich peinlich fragen, aber ich kann nicht scheinen, ein neues Modell nach dem Speichern der aktuellen erstellen.Emberjs erstellen neues Modell nach dem Speichern

Denken todo App, wo man neue Aufgaben hinzugefügt behalten möchten:

ich eine sehr einfache Strecke haben, die richtig spart, aber nicht aktualisiert, das Frontend mit einem neuen Modell

model() { 
    return RSVP.hash({ 
     distro: get(this, 'store').createRecord('distro'), 
    }); 
    }, 

    setupController(controller, models) { 
    controller.setProperties(models); 
    }, 

    actions: { 
    saveDistro(distro) { 
     let newDistro = get(this, 'store').createRecord('distro'); 

     distro.save().then(() => { 
     set(this, 'distro', newDistro); 
     }); 
    }, 
    } 

I Ich denke, ich vermisse nur das Offensichtliche hier?

+0

Was genau meinst du mit "kann nicht scheinen"? – Serge

Antwort

0

Sie erstellen hier 2 verschiedene distros hier. Der erste ist der, der an Ihren Controller übergeben wird, um angezeigt zu werden, und der zweite ist der, der in der Aktion saveDistro() erstellt wird.

Im Allgemeinen möchten Sie keinen neuen Datensatz im model() Hook erstellen. Das dient zum Auffinden von Daten. Da ich nicht sicher bin, was Sie mit dem ersten Distro in Ihrem Controller und sehen tun, kann ich nichts sagen, aber ich würde so etwas wie dies empfehlen:

EDIT:

// Controller 
init() { 
    this._super(...arguments) 
    this.set('formAttrs', { 
    attr1: null, 
    attr2: null 
    // ... 
    }) 
}, 

actions: { 
    saveDistro() { 
    const attrs = this.get('formAttrs') 
    this.send('saveDistro', attrs) 
    } 
} 

// Model 
actions: { 
    saveDistro(attrs) { 
    let newDistro = get(this, 'store').createRecord('distro', attrs); 

    distro.save().then(() => { 
     // transition to new distro route 
    }); 
    } 
} 
+0

Danke für die Antwort, es ist eine einfache "create new" Route, also glaube ich nicht, dass ich alle aktuellen Distributionen holen möchte, oder? Aber ich brauche ein Modell für das Formular, um Daten zu speichern und es auf dem Modell-Hook –

+0

Gotcha zu erstellen. Sie benötigen kein Modell, um das Formular zum Speichern der Daten zu erstellen. In der Tat würde ich dich drängen, das nicht zu tun. Erstellen Sie in Ihrem Controller ein form attrs-Objekt, um die Werte zu speichern, und verwenden Sie dann die Werte, um die neue 'Distro' in der Aktion zu erstellen. – xcskier56

+0

Ich habe die Antwort aktualisiert, um zu reflektieren, wovon ich rede – xcskier56

Verwandte Themen