2

私はバックボーンを使用しており、練習に従っていくつかのデータをブートストラップしています (http://documentcloud.github.com/backbone/#FAQ-bootstrap)。

ただし、ブートストラップされたモデルを保存すると、バックボーンはモデルをサーバー上に存在しないものとして扱い (model.isNew === true, http://backbonejs.org/#Model-isNew )、バックボーンを呼び出します。 「update」の代わりに「create」メソッドで同期します。したがって、PUT HTTP メソッドの代わりに POST が呼び出されます。

isNew を false に設定してモデルをブートストラップする方法、つまりバックボーンがモデルをサーバー上に存在するものとして扱うにはどうすればよいですか?

4

2 に答える 2

2

どうやら、model.isNew は、ここで説明されているように id が設定されているかどうかによって決定されます: http://backbonejs.org/#Model-isNew。つまり、id セットを使用してデータをブートストラップすると、問題が解決します

于 2012-07-11T15:39:30.493 に答える
0

最近、この問題に遭遇しました。バックボーン モデルで parse()、initialize()、および isNew() 関数をオーバーライドすることで克服しました。

initialize() 関数は、「loadedFromServer」プロパティを false に初期化します。

    initialize: function () {
        this.loadedFromServer = false;
    },

parse() 関数は「loadedFromServer」プロパティを true に設定し、応答を返します。

    parse: function (response) {
        this.loadedFromServer = true;
        return response;
    },

次に isNew() 関数は、id (空のモデルの場合) をチェックするか、id が設定されているがサーバーに同期されていないかどうかをチェックします。

    isNew: function () {
        return !this.id || !this.loadedFromServer;
    }

これは、次のテストを満たします。

isNew() は、フェッチされた場合に false を報告する isNew() は、ID が設定されていない場合に true を報告する

于 2013-03-06T14:53:28.227 に答える