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

問題は、指定されたIDでnewCustomerのRESTFulを取得する必要があるということですが、サーバーから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:

つまり、そのバックボーンは、サーバーから返された新しい値でモデルのデータを更新していません。

何か案が?

ありがとう

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 に答える