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 的 RESTFul 给定 ID,但不知道有什么方法可以等到服务器响应发布请求。有任何想法吗?

谢谢!

更新:

我让它这样工作:

            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:

现在的问题是,主干没有使用从服务器返回的新值更新模型的数据。

任何想法?

谢谢

4

3 回答 3

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
        });
    }
});
于 2013-02-18T18:21:01.013 回答
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
                });
            }
        });

非常感谢!

于 2013-02-19T00:27:21.777 回答
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 应该可以完成这项工作,不是吗?

否则,您应该能够收听集合与服务器同步后触发的“重置”事件。

希望能帮助到你

于 2013-02-18T18:24:45.483 回答