我试图使用easyXDM覆盖骨干模型获取功能,使用easyXDM的原因是因为服务器位于不同的域。
这里是获取代码:
fetch: function(options)
{
model = this;
a = true;
this.xhr.request({
url: "http://server.dev:9000/users/" + this.id,
method: "GET"
}, function(response){
console.log(response.data);
var jsonResponse = JSON.parse(response.data);
if (jsonResponse.status == 'success'){
model.set({
firstName : jsonResponse.data.first_name,
lastName : jsonResponse.data.last_name,
email : jsonResponse.data.email,
companyName : jsonResponse.data.company.name,
companyId : jsonResponse.data.company.id
})
}
});
}
这是控制器获取模型的代码
var user = new UserModel({id : id});
user.fetch();
alert(user.get('firstName')); // display undefined
所以问题是每当我调用fetch时,模型仍然没有填充。 我在想因为easyXDM请求是异步的所以它尚未填充。 反正是否确保模型已填充并可以使用? 也许使用回调,关于如何创建回调的任何方向?
答案 0 :(得分:1)
抱歉,我最初误解了你的问题。无论是否使用easyXDM,Fetch都是异步的,因此您必须实现fetch的onsuccess回调,或者在对其执行任何操作之前检查模型是否已设置(使用长度或其他方法)。这篇文章也可能有所帮助:
Backbone.js: Elegant way to check if data ready and if the dataset is empty