Backbone集合创造了成功

时间:2013-02-18 18:05:00

标签: backbone.js

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:

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

有什么想法吗?

由于

3 个答案:

答案 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应该可以完成这项工作,不应该吗?

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

希望有所帮助