私はModel.syncの逆の直感的な動作と興味があります。バックボーンModel.syncプロキシはなぜ第2パラメータ(モデル)は義務的です
syncの2番目の引数はモデルで、Backbone.sync
の場合は意味があります。しかし、プロキシとして動作するとき:
var MyModel = Backbone.Model.extend({baseUrl})
var myModel = new MyModel({id})
console.log(myModel.url()) // will issue baseUrl + id path
myModel.sync(method, myModel)
これは、同期を呼び出す同じモデルを渡す余分なビットです。
backbone.js:1907 Uncaught Error: A "url" property or function must be specified
をそして、これは設計上で行われる:
場合、あなたはそれが非常に非友好的なエラーがポップアップ表示されます渡しません。ドキュメントをよく見ているときには、第2パラメータが必須であることを明確に述べています。
私はそれを少しフレキシブルにしない理由を理解しようとしており、このモデルをライブラリレベルで渡して自分で作っていますか?このような
何か、私は最大だものを実証するための非常に愚かな例:
// Proxy `Backbone.sync` by default -- but override this if you need
// custom syncing semantics for *this* particular model.
sync: function() {
var args = arguments.splice(2, 0, this); // << make second attribute correspond to the this model
return Backbone.sync.apply(this, args);
},
明確化:
Model.sync上のドキュメントは、私の中のSO
sync model.sync(method, model, [options]) Uses Backbone.sync to persist the state of a model to the server. Can be overridden for custom behavior.
を語ります私は、次の手順で 'patch'メソッドを使用してモデルを同期しようとしています:
a。データでモデルを更新する
b。 (:保護またはより良い)、プログラマはfetch()
、save()
とdestroy()
を使用したいsync()
方法は、民間の一種である同期方法
this.model.set(data)
this.model.sync('patch', this.model)
あなたが実際に知りたいことは私には不明です。どうか明らかにしてください。 'sync()'はモデルインスタンスの外部で使用するためのものではなく、実際にはプライベートで、 'fetch()'、 'save()'、 'destroy()'のみで使用されます。おそらく1つのニッチ・ユース・ケースがあり、それは外部で使用する必要があります。 –
@ try-catch-finally-finallyが明らかになり、またあなたは質問に答えました。これがモデルの外で使われることを意図していないのであれば、なぜドキュメンテーション上にパブリックAPIとして掲載されているのですか? – dmi3y