好吧,我需要在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 :(得分:0)
$.ajax
不返回promise对象,为了使它与Ember model()
函数兼容,你应该用Promise对象包装它:
return new Promise((resolve, reject) => {
$.ajax({
success() {
....
resolve(data);
}
})
})
无论如何,我不建议您使用$.ajax
,并使用Ember模型加载数据。