2017-10-28 6 views
0

これは、Ajaxリクエストが完了した後にモデルをロードする必要があります。emberからの負荷モデルは未定義です

ajaxリクエストが完了したら、データをストアにプッシュします。プッシュした後、データを返してテンプレート上にレンダリングする必要があります。問題は、{{model}}変数が空であることです。

model(params) { 
    const controller = this.controllerFor('users.profile'); 

    return controller.get('session').authorize('authorizer:devise', (headerName, headerValue) => { 
     const url = '/api/users/profile/'+this.get('session.data.authenticated.user.id'); 

     return Ember.$.ajax({ 
      method: 'GET', 
      url: controller.get('backendURL')+url, 
      dataType: 'json', 
      //data: , 
      contentType: 'application/json', 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader(headerName, headerValue); 
      }, 
      success: function(
       this.store.pushPayload('user',data); 
       //at this point I can see the user info in the ember inspector addon. 
       return Ember.RSVP.resolve(data);//return usr; 
      }, 
      error: function(data){ 
       controller.get('flashMessages').danger('ERROR, '+ data); 
       Ember.$("#loading").hide("slow"); 
       controller.set('seeTable',false); 
      } 
     }); 
    }); 
} 

私のルートには何が間違っていますか?

+0

それは 'success:function(data){....}'でなければなりませんか? – kasperite

+0

私は、認可を混在させてモデルを1つのモデルフックに入れてはいけないと思います。私の助言は:承認のためにEmber Simple Authを使用することです! –

答えて

0

$.ajaxはあなたが約束のオブジェクトでそれをラップする必要がありエンバーmodel()機能と互換性を持たせるために、約束のオブジェクトを返しません:とにかく

return new Promise((resolve, reject) => { 
    $.ajax({ 
    success() { 
     .... 
     resolve(data); 
    } 
    }) 
}) 

、私は$.ajaxを使用することをお勧めいたしますと、負荷データはありませんEmberモデルを使用します。

関連する問題