2013-02-18 87 views
3

配合,我有这样的代码:骨干集合创建成功

   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的REST给出的ID,但不知道有什么方法来等待,直到POST请求回答从服务器。 任何想法?

谢谢!

UPDATE:

我做了它的工作是这样的:

  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:

现在的事情是,骨干不是用新值更新模型的数据从服务器返回。

有什么想法?

感谢

回答

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 
       }); 
      } 
     }); 

非常感谢!

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 
     }); 
    } 
}); 
+0

我已经试过这个,但仍然不让我“得到”身份证。它说它没有定义。 – Pablo 2013-02-18 20:06:52

+0

您能准确发布错误说的是什么吗? – Ben 2013-02-18 20:20:02

+0

这只是'id'属性是未定义的。 如果我console.log(newCustomer),它不显示属性下的任何id,但它显示在changed.attributes下。 有什么想法? – Pablo 2013-02-18 20:25:49

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回调应该做这份工作,不是吗?

否则,您应该能够听取一次集合与服务器同步后触发的'重置'事件。

希望它可以帮助