2017-01-09 10 views
2

これは私のrouter.jsコードです。コントローラember.jsのパラメータにアクセスする方法

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

これは私のroute.jsコードです。

model(params) { 

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

これは私のcontroller.jsコードです。このように使用できます。それはnull値としてエラーを示します 私を助けてください。どのようにあなたのroute.js、コントローラ

recordChat: function() { 

    var chat = this.get(params.chat_id) 

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

。?あなたは必要な情報を提供するようにあなたの投稿を更新することを検討する必要があります。 – nyedidikeke

+0

null値を表示 –

+0

'recordChat'関数から何も返さない。あなたはその関数をいつ呼びますか? – Lux

答えて

0

でのparamsを使用するために、あなたはこのようsetupController関数を呼び出す必要があります。

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

今、あなたが呼び出すことによって、あなたのコントローラで、それへのアクセス権を持っている:

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:

を参照してくださいWOここtwiddle

+0

doesn ' Brother –

+0

'this.get( 'chat')'またはthis.get( 'model') '何も返さない?それはできません;)。それが動作しているかどうかをどうやって確認しますか?あなたのrecordChatは現時点で何もしません... –

+0

はいそれは動作しません。このrecordChatは、入力ボックスにデータを入力して保存ボタンをクリックしてchat_idでパラメータを入力すると有効になります。 –

3

をrking私は最も簡単な答えはルートで変数を作成し、setupControllerでそれを設定することであると思う:

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

ここで 'controllerFor'は必要ではなく、' controller.set( ' – kumkanillam

+0

ありがとう!私はそれを知らないでしょう! – Cameron

0

私はあなたがIDを取得することができると思いますあなたがモデルから欲しいのは、chat_idパラメータを使ってレコードを探し出し、そのidがチャットオブジェクト(ルートモデル自体)の一部になっているからです。

だから、あなたのコントローラであなただけ実行する必要があります。this.get( 'モデル')どのようなエラーID

関連する問題