2017-05-11 3 views
0

EmberJSに大きな問題があります。私はこのようなモデルの倍数をロードするためにEmber.RSVP.hashを使用しています:Ember - 経路からコントローラへ変数を渡す

ルート:

model() { 
    const self = this; 
    return Ember.RSVP.hash({ 
     test: 'sample text' 
    }).then((hash) => { 
     return Ember.RSVP.hash({ 
     test: hash.test, 
     }); 
    }, self); 
    } 

をその後、私のコントローラで、私はこのように、このモデルのparamにアクセスしようとしている:

コントローラ:

export default Controller.extend({ 
    init() { 
    console.log(this.get('model.test'); 
    } 

私のコンソールは、 'サンプルテキスト' をログに記録が、unfor必要がありますtunately私はを「未定義」にしています

これは私が使ったinitメソッドに起因するのでしょうか?このルートページをロードした直後にこのパラメータにアクセスする必要があることに気づきたい。 route.jsで

答えて

0

使用setupControllerフックは、モデルのプロパティとmodelに基づいて設定コントローラのプロパティへのアクセスを得ることができるので、あなたは、引数にcontrollermodelインスタンスを取得しますので、それは、モデルのフックの後に呼び出されます。あなたがやったように、あなたがthis.get('model.test')にそれにアクセスすることはできませんので

setupController(controller,model) 
{ 
controller.setProperites(model); 
    //you can do anything with controller and model instance 
} 

init方法が実行を終了する前にmodelフックと呼ばれます。

+0

私はあなたのようなsetupControllerも書いているのを忘れましたが、それでも私が期待した通りに動作しません。 次に、このパラメータにはどのようにアクセスできますか? – kamrza

+0

paramsにはどこにアクセスしますか? (つまり、paramsが 'model'であることを意味します) – kumkanillam

+0

@kamrzaコントローラの' model.test'にアクセスすることで何をしますか?このプロパティをテンプレートに追加するには、直接アクセスできます。 'model.test'にいくつかのデコレーションを行いたい場合は、計算されたプロパティを作成し、その値を返します。その計算されたプロパティをテンプレートに使用することができます – kumkanillam

0

モデルの属性にアクセスするには、親のControllerオブジェクトでセットアップを行う必要があります。次のことを試してみてください。

コントローラ

export default Controller.extend({ 
    init() { 
     // This line calls the Controller constructor... 
     this._super(...arguments); 
     console.log(this.get('model.test'); 
    } 
}); 

The Ember docsはあなたが必要とする追加情報を提供することがあります。

さらに、コントローラは、モデルの約束が解決される前に構築される可能性が最も高いです。その場合は、計算されたプロパティにアクセスしようとするときに、依存する属性が値を変更したときに更新されるcomputed propertiesを使用する必要があります。

関連する問題