来自ajax的灰烬负载模型未被发现
问题描述:
嗯,我需要在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);
}
});
});
}
任何建议,什么是错误的我的路线?
答
$.ajax
不返回的承诺目标,使之与Ember model()
功能兼容,你应该与承诺对象包装它:
return new Promise((resolve, reject) => {
$.ajax({
success() {
....
resolve(data);
}
})
})
反正,我不建议你使用$.ajax
,并加载数据使用Ember模型。
它应该是'success:function(data){....}'? – kasperite
我认为你不应该混合授权和在一个模型钩子中获取模型。我的建议是:使用Ember Simple Auth进行授权! –