2017-01-09 10 views
2

Das ist mein Router.js-Code.Zugriff auf die Parameter im Controller ember.js

this.route('contact',{'path': '/contact/:chat_id'}); 

und das ist mein route.js Code.

model(params) { 

    return this.store.findRecord("chat", params.chat_id) 
}, 

und das ist mein controller.js Code und kann ich so verwenden. Es zeigt Fehler als Nullwert bitte helfen Sie mir. Wie params in Controller verwenden

recordChat: function() { 

    var chat = this.get(params.chat_id) 

    Ember.RSVP.hash({ 
    offer_id: chat, 
    }) 
} 
+0

Was für Fehler.? Sie sollten in Erwägung ziehen, Ihren Beitrag zu aktualisieren, um die erforderlichen Informationen bereitzustellen. – nyedidikeke

+0

Es zeigt Nullwert –

+0

Sie geben nichts von Ihrer 'recordChat' Funktion zurück. Auch wann nennst du diese Funktion? – Lux

Antwort

0

In Ihrem route.js, müssen Sie die setupController Funktion wie folgt nennen:

setupController(controller, model) { 
    this._super(...arguments); 
    controller.set('chat', model); 
} 

Jetzt haben Sie Zugriff auf sie in Ihrem Controller durch den Aufruf:

recordChat() { 
    const chat = this.get('chat'); 
    // if you don't call the setupController function, you could also do: 
    // const chat = this.get('model') or this.get('model.id') if you want the id only 
} 

UPDATE:

See wo rking twiddle hier

+0

Es doesn ' t Arbeit Bro –

+0

'this.get ('chat')' oder 'this.get ('model')' gib nichts zurück? Das kann nicht sein ;). Wie überprüfen Sie, ob es funktioniert? Dein recordChat tut im Moment nichts ... –

+0

Ja Bro es geht nicht. Diese recordChat funktioniert, wenn Benutzer die Daten in Eingabefeld füllen und klicken Sie auf Speichern Schaltfläche und in Chat_id Parameter müssen in offerid Stelle –

3

Ich denke, die einfachste Antwort ist eine Variable in Route zu erstellen und es dann in dem setupController gesetzt:

your_route.js

export default Ember.Route.extend({ 
    model(params) { 
    this.set('myParam',params.my_Params); 

    // Do Model Stuff... 
    }, 
    setupController(controller, model) { 
    // Call _super for default behavior 
    this._super(controller, model); 
    // Implement your custom setup after 
    controller.set('myParam', this.get('myParam')); 
    } 
}); 
+2

Hier ist 'controllerFor' nicht nötig, man kann einfach' controller.set' sagen (' – kumkanillam

+0

Danke! Ich wusste das nicht. Ich werde es ändern! – Cameron

0

ich glaube, Sie die ID holen können Sie möchten vom Modell, weil Sie den Parameter chat_id verwendet haben, um den Datensatz zu finden, und diese ID ist jetzt Teil Ihres Chat-Objekts (welches das Routenmodell selbst ist).

in Ihrem Controller Also, Sie brauchen nur zu tun: this.get ('Modell') id

Verwandte Themen