私はBackboneを新しいプロジェクトに使用していますが、これまでのところそれを愛していましたが、私は邪魔にならないようになりました。バックボーンModel.save()はイベントへのすべてのバインディングを無効にします
モデル全体を説明せずに、モデルを保存すると、応答がサーバーから戻って再び解析され、新しいサブオブジェクトが作成され、以前に付けていたオブジェクト。
私はContentCollection
(そのBackbone.Modelないコレクション)を保存する場合には、サーバーから戻って来るときたとえば、応答が解析され、すべて私がthis.contentItems
に持っていた結合を壊すthis.contentItems
の新しいコレクションを作成します。これを回避する方法はありますか?何とか応答を解析しないようにバックボーンに伝えますか?バインディングを元のリストから取り出して、新しいリストに再度添付しますか?
App.ContentCollection = Backbone.Model.extend({
urlRoot: '/collection',
initialize: function() {
},
parse: function(resp, xhr) {
this.contentItems = new App.ContentList(resp.items)
this.subscriptions = new App.SubscriptionList(resp.subscriptions)
return resp
},
remove: function(model){
this.contentItems.remove(model)
this.save({'removeContentId':model.attributes.id})
},
setPrimaryContent: function(model){
this.save({'setPrimaryContent':model.attributes.id})
}
})
誰もこれまでに遭遇したことはありますか?
'parse'が' 'fetch'とfetch'によって呼び出されます:あなたが最初の呼び出し
はfetch()
、何かのようにするとき私は過去にこのユースケースを扱ってきた方法は、コレクションを初期化することです'parse'の後の' reset'は呼び出されます(http://stackoverflow.com/a/9675974/479863)。バックボーンのおめでとう。数時間後にピンクになるブロンズ。 –
@muistooshort - その場合も、 'parse'は副作用がないと期待されます(私たちはここに同意していると思います)。ありがとう! – nrabinowitz
はい、私たちは同意しています、 'parse'は単純なデータ変換器であると考えられていますが、それが使用されている特定のコンテキストが副作用を悪い考えにしています。 –