2017-10-28 134 views
0

嗯,我需要在ajax请求完成后加载我的模型。来自ajax的灰烬负载模型未被发现

当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

我认为你不应该混合授权和在一个模型钩子中获取模型。我的建议是:使用Ember Simple Auth进行授权! –

回答

0

$.ajax不返回的承诺目标,使之与Ember model()功能兼容,你应该与承诺对象包装它:

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

反正,我不建议你使用$.ajax,并加载数据使用Ember模型。