2017-01-23 10 views
0

コントローラーのコントローラーからアクセスする正しい方法は何ですか? Emberのコントローラーからモデルにアクセスする正しい方法は何ですか

私は、コントローラの のinitにモデルがまだ

#1 controller.js

init(){ 
    console.log(this.model); // IS NULL 
} 

しかし setupController方法は、人口 モデルを持っているnullであることに気づきました。したがって、私はコントローラのメソッドを setupControllerから呼び出し、そのモデルをそこに渡しています。いいですか?

コントローラにコールバックメソッドがあり、コントローラのセットアップ時に自動的に呼び出されると思っていました。

+0

ここにあなたの質問に対する答えがあります。 http://stackoverflow.com/questions/27332840/how-to-access-ember-model-in-oninit-in-object-controller –

答えて

2

route.js

model() { 
    return this.store.findAll("post"); 
    }, 
    setupController(controller, model){ 
    controller.set('model', model); 
    } 

これはポストオブジェクトのコレクションですコンソール・ログ・モデルを提供します。

controller.js

init(){ 
    console.log(this.model); 
} 

私たちは、あなたがあなたのコントローラ上のモデルがどうなるかを選択した RSVPの約束を使用する場合は特に回のこの大半を行います。これはまた、あなたのモデルを与えることも可能である

model(params) { 
    return Ember.RSVP.hash({ 
     lecture: this.store.findRecord('section', params.section_id).then((section)=>{ 
     return this.store.createRecord('lecture',{ 
      section: section 
     }); 
     }), 
     section:this.store.findRecord('section', params.section_id), 
     course: this.store.query('course',{filter:{section_id:params.section_id}}) 
    }); 
    }, 
    setupController(controller,model){ 
    controller.set('model', model.lecture); 
    controller.set('section', model.section); 
    controller.set('course', model.course); 

    } 

注意あなたが唯一のルート

model(params) { 
     return this.store.findRecord('course', params.course_id); 
     } 

上の単純なモデルを持っていて、コントローラ上の任意の設定を行う必要があります `tを場合オンコントローラ。

+1

Hmmm。私はあなたが何を意味するかを見ます。つまり、言い換えれば。私がやっていることは間違っていませんか? –

+0

あなたがこのようなことをした場合、あなたは間違っていません。 –

+0

よろしくお願いします。 –

1

setupControllerフックメソッドは、モデルをプロパティとしてコントローラに設定します。

コントローラーの通常の他のプロパティと同じようにモデルを取得できます。 this.get('model')

関連する問題