3

Backbone.js を学習しようとしていますが、問題が発生しています。model.fetch は値を正常に更新しますが、model.save はモデル値を更新しません。

以下の私のコードを見て、ここで何か間違っているかどうか教えてください:

モデル

var Person = Backbone.Model.extend({

    url: "CreatePerson",
    defaults: {
        name: "",
        age: 0
    },
initialize: function(){

this.on("change:name",function(){

        alert("Updated value is: "+this.get("name"));
    });
    }

});

私は自分のhtmlページでこのモデルのインスタンスを作成しています。コードは次のとおりです。

var person = new Person({name:"manish"});

person.save(person,{

        wait: true,
        success: function(){
            alert("Data saved: "+person.toJSON().name);
        },
        error: function(){
            alert("Sorry, something wrong went with the system");
        }       
    });
person.fetch({

        success: function(){
            alert("Data Fetched: "+person.get("name"));
        }
    });

保存とフェッチの両方で、サーバーから次の JSON データを返しています。

{"name":"Logan","age":23}

興味深いことに、保存の場合、変更イベントは発生せず、アラート ボックスには古いモデル値 (つまり、manish) が表示されますが、フェッチ関数が実行されると、変更イベントが発生し、フェッチ コールバックによって新しい値 (つまり、logan) が表示されます。 .

ここで私が間違っていることを誰かが特定するのを手伝ってくれますか?

4

2 に答える 2

1

backbonejs.org から

http://backbonejs.org/#Model-save

新しい属性で保存を呼び出すと、すぐに「変更」イベントが発生し、サーバーが変更の成功を確認した後に「同期」イベントが発生します。モデルに新しい属性を設定する前にサーバーを待ちたい場合は、 {wait: true} を渡します。

サーバーが終了したことを返していないようです。wait:true を削除すると、変更されたイベントがトリガーされます。

于 2012-11-25T15:35:38.510 に答える
0

コードにエラーがあります:

person.save(person,{

モデル自体ではなく、保存呼び出しまたはオプションのみに属性のオブジェクトを提供する必要があります。取り外しperson,て動作確認。wait:trueサーバーによって検証された適切なデータに確実に変更するために、設定する必要があります。

于 2012-11-25T20:50:32.700 に答える