2016-10-21 1 views
0

私はemberの初心者ですから、助けが必要です。on initは、モデルの解決に基づいてPOST呼び出しを行います。

application/route.jsでは、モデルが取得する応答に基づいてPOST呼び出しを行う必要があります。これはroute.jsのようなものです:

export default Route.extend({ 
    ajax: inject.service(), 
    details: inject.service(), 

    model() { 
     return this.get('details').fetchAccount(); 
    }, 

ですので、一度モデルがinitで解決されると、私は呼び出しを行う必要があります。モデルにはステータスがあり、それが真であれば呼び出しを実行します。

init() { 
    if (model.user) { 
     ... 
    } 
} 

これはどのように達成するのですか?約束を返していません

model() { 
    let fetchedAccount = this.get('details').fetchAccount(); 

    fetchedAccount.then(account => { 
    doTheThingWith(account); // Obviously, your own code here 
    }); 

    return fetchedAccount; 
} 

答えて

1

this.get('details').fetchAccount()ならば、あなたはsetupControllerフックを使用して試すことができます:

+0

コントローラにセットアップがありません。それが解決された後、私はそれが本当のPOST呼び出しを実行する必要があります実行する必要があります。 – Askar

+1

'if'ブロックでPOST呼び出しを実行することができます。 – kumkanillam

+0

ありがとう!できます!!! – Askar

1

あなたはfetchAccount方法の約束の解決時に何をするかmodel方法を指示することができます。

setupController(controller,model){ 
this._super(...arguments); 
if (model.user) { 
     ... 
    } 
} 

それがすべてです

は、あなたがsetupControllerフックを利用することができ、コントローラする任意のプロパティを設定しようとしているあなたは、モデルが解決した後に行っているかに依存します。

+0

おかげさまでクリス!私はそれを試してみましょう。 – Askar

+0

こんにちはクリス、私はエラーが発生しています。 TypeError: 'caller'と 'arguments'は制限された関数プロパティであり、このコンテキストではアクセスできません。 私はこれをやろうとしていました。 fetchedAccount.then(アカウント=> { console.log(account); }); – Askar

+0

私はあなたを助けることができるとは確信していませんが、あなたの質問を 'fetchAccount()'のコードで更新して、他の人があなたを助けることを考えてみてください。私の主な経験はEmber Dataを使って、自分のPromise構造を動かさないことです。 –

1

afterModel経路のフックを使用できます。

+0

私はember-dataを使用していません。私はそれがうまくいくかどうかわからないが、コメントのおかげで。 – Askar

+0

ember-dataを使用していなくても使用できます。 'fetchAccount()'が約束を返す場合、約束が解決された後、ルートの 'afterModel'フックが実行されます。 – ykaragol

関連する問題