私はモデルを取得するたびに "id"属性を設定するためにBackbone.syncをオーバーライドしようとしています。このようにして、fetch()がidで応答しなくても、次のmodel.save()が更新を起動し、を作成しないと確信しています。Backbone.syncをオーバーライド
Backbone._sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
var params = _.clone(options);
params.success = function(model) {
if(method == 'read' && model.isNew()) {
var id = Math.floor(Math.random()*1000);
model.set({ "id": id });
}
if(options.success) options.success(model);
};
Backbone._sync(method, model, params);
}
しかし、成功関数に渡されたモデルは、バックボーンモデルではなく、オブジェクトであるようです。だから、私はそれにmodel.isNew()のようなメソッドを使用することはできません。私が間違っていたことのアイデア?
合意。 'Backbone.sync'はあなたのトランスポート/プロトコルに関するものです。あなたはあなたの技術に "作成"、 "更新"などの動詞をマップするためにそれを上書きします。デフォルトで 'Backbone.sync'はHTTP/RESTですが、他のもの(Socket.ioやローカルストレージなど)が必要な場合は、それを変更することができます。データを使って(IDを設定するなど)何かをしたいのであれば、あなたが示唆しているようにモデル内で起こるはずです。 –
非常に完全な答えは、私の問題を解決しました。どうもありがとう。 –
@BrianGenisio parseとfetchの両方の成功のコールバックの使い方を教えてください。私はパースを使ってメタデータを分離し、次にレンダリングロジックを成功させたいと考えています。しかし、私がmodel.parseを定義すると成功コールバックは決して呼び出されません。 – BlackDivine