2016-05-22 8 views
0

私は現在、Facebookからデータを取得するEmber.jsアプリケーションを開発中です。コンポーネントのFacebookデータにアクセスするには?

問題は、私のコンポーネント(js/hbs)のアプリケーションルートで取得されたデータに実際にアクセスする方法が実際にはわからないことです。

認証とデータフェッチにはember-simple-authと鳥居を使用します。

私のアプリケーションのルートは現在、次のようになります。

import Ember from 'ember'; 
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin' 

export default Ember.Route.extend(ApplicationRouteMixin, { 
    fetchCurrentUser() { 
    const data = this.get('session.data.authenticated'); 
    const {accessToken} = data; 

    if (accessToken) { 
     return new Promise(resolve => { 
     FB.api('/me?fields=name,posts&access_token=' + accessToken, response => { 
      resolve() 
     }) 
     }) 
    } 
    }, 

    beforeModel(transition) { 
    this._super(transition); 
    if (this.get('session.isAuthenticated')) { 
     return this.fetchCurrentUser() 
    } 
    }, 

    actions: { 
    login() { 
     return this 
     .get('session') 
     .authenticate('authenticator:torii', 'facebook-connect') 
     .then(() => { 
      this.fetchCurrentUser(); 
     }) 
     .catch(err => console.error(err)); 
    }, 

    logout() { 
     return this 
     .get('session') 
     .invalidate() 
    } 
    } 
}); 

私はすでにアプローチで検索しましたが、情報のほとんどは時代遅れです。

あなたは、誰もが私のための提案を持っていますhere

をひねり見つけることができますか?

答えて

0

あなたのルートにはmodel()フックがありますか?私はbeforeModel()フックがトランジションを処理するのを見るが、モデルコールは扱っていない。それはあなたのApplicationRouteMixinに住んでいますか?

model() { 
    return this.fetchCurrentUser(); 
} 

モデルコールは、通常、あなたのajaxリクエストが存在する場所です。 model()の結果は、setupControllerに渡されます。コントローラは、テンプレート/ビューでデータにアクセスできるようにするものです。これは自動的に呼び出されhttps://github.com/emberjs/ember.js/blob/c7db394fe322dcfee0c79a58334103e2dc87a3a1/packages/ember-routing/lib/system/route.js#L1629-L1635

が、model()コールせずに、それは何もしません:

setupController(controller, model) { 
    Ember.set(controller, 'model', model); 
} 

参考のために:setupControllerは基本的にありません。コンポーネントはステートレスです。つまり、これらのコンポーネントに渡すデータにのみアクセスできます。だから、あなたは私たちが今、このmodelフックを持っている場合は、その後、私たちは、テンプレートの私達のコンポーネントにそれを渡すことができます:

{{our-component model=model}}

modelことは私たちのデータを返す - >setupControllerセットコントローラ上のデータということ - >controllerたちを可能にテンプレート上のそのデータにアクセスし、それを私たちのコンポーネントに渡します。

これが役立つかどうか教えてください。これが役に立たない場合は、あなたのミックスインについてのひねりや情報を自由に投稿してください。

+0

私が提案したようにツイールドを追加しました。 – mian

関連する問題