Mates,我有这段代码:
var newCustomer = customers.create({
'id_pais' : usrinfo.country,
'nombre' : usrinfo.name,
'apellido' : usrinfo.lastname,
'pasaporte' : usrinfo.passport,
'mail' : usrinfo.mail,
'birth' : usrinfo.birth
});
console.log(newCustomer.get('id'));
// Create Guest
var cama = beds.get(usrinfo.dorm);
var newGuest = guests.create({
'id_room' : cama.get('id_room'),
'id_bed' : usrinfo.dorm,
'id_customer' : newCustomer.get('id'),
'inDate' : usrinfo.inDate,
'outDate' : usrinfo.outDate,
'notas' : usrinfo.notes
});
问题是,我需要获取newCustomer的RESTFul给定id,但是不知道任何方法要等到从服务器回答post请求。 有什么想法吗?
谢谢!
更新:
我以这种方式工作:
var newCustomer;
newCustomer = customers.create({
'id_pais' : usrinfo.country,
'nombre' : usrinfo.name,
'apellido' : usrinfo.lastname,
'pasaporte' : usrinfo.passport,
'mail' : usrinfo.mail,
'birth' : usrinfo.birth
}, {
success: function(response){
var a = newCustomer.changedAttributes();
var cama = beds.get(usrinfo.dorm);
var newGuest = guests.create({
'id_room' : cama.get('id_room'),
'id_bed' : usrinfo.dorm,
'id_customer' : a.attributes.id,
'inDate' : usrinfo.inDate,
'outDate' : usrinfo.outDate,
'notas' : usrinfo.notes
});
}
});
所以,用:
var a = newCustomer.changedAttributes();
然后我可以访问id,如下所示:
a.attributes.id
感谢您的帮助!
更新2:
现在的问题是,骨干网没有使用服务器返回的新值更新模型的数据。
有什么想法吗?
由于
答案 0 :(得分:6)
您可以在创建选项中提供success
回调:
var newCustomer;
newCustomer = customers.create({
'id_pais' : usrinfo.country,
'nombre' : usrinfo.name,
'apellido' : usrinfo.lastname,
'pasaporte' : usrinfo.passport,
'mail' : usrinfo.mail,
'birth' : usrinfo.birth
}, {
success: function() {
console.log(newCustomer.get('id'));
// Create Guest
var cama = beds.get(usrinfo.dorm);
var newGuest = guests.create({
'id_room' : cama.get('id_room'),
'id_bed' : usrinfo.dorm,
'id_customer' : newCustomer.get('id'),
'inDate' : usrinfo.inDate,
'outDate' : usrinfo.outDate,
'notas' : usrinfo.notes
});
}
});
答案 1 :(得分:1)
发现问题! 就是Laravel控制器正在返回孔Eloquent对象,而不仅仅是模型的数据。
使用此代码,工作正常:
var newCustomer;
newCustomer = customers.create({
'id_pais' : usrinfo.country,
'nombre' : usrinfo.name,
'apellido' : usrinfo.lastname,
'pasaporte' : usrinfo.passport,
'mail' : usrinfo.mail,
'birth' : usrinfo.birth
}, {
success: function(response){
var a = newCustomer.changedAttributes();
var cama = beds.get(usrinfo.dorm);
var newGuest = guests.create({
'id_room' : cama.get('id_room'),
'id_bed' : usrinfo.dorm,
'id_customer' : a.attributes.id,
'inDate' : usrinfo.inDate,
'outDate' : usrinfo.outDate,
'notas' : usrinfo.notes
});
}
});
非常感谢!
答案 2 :(得分:0)
我在下面的页面上找到了这个: http://lab.devaddiction.com/backbone-js-tutorial-synchronization-and-persistence/
user.save({}, { // generate POST /users - content: {name: 'John'}
success: function() {
// Assuming that the server returned the object {"id": 1}
alert(user.id); // show 1
}
});
因此,回调中的init newguest应该可以完成这项工作,不应该吗?
否则,你应该能够收听一个集合与服务器同步后触发的'重置'事件。
希望有所帮助