バックボーンコレクション内のすべてのモデルをループして、変更されたモデルを保存するか、削除対象として選択されたモデルを破棄する2つの関数があります。成功とエラーを照合して、「X個の変更/削除が成功しました」および/または「X個のドメインの変更/保存中にエラーが発生しました」と通知できるようにする必要があります。
バックボーンコレクションを保存/破棄した経験はなく、モデルのみです。これを行う方法を示すものはインターネット上に見つかりません。
保存と削除は、親ビューのイベントによって呼び出されます。
関連するコード:
App.Views.SiteDomains = Backbone.View.extend({
el: '.site-domains',
initialize: function() {
this.collection.on('all',this.render, this);
},
render: function() {
$('.site-domains').empty();
this.collection.each( function(model)
{
var view = new App.Views.SiteDomain({model: model});
this.$('.site-domains').append(view.render().el);
return this;
});
},
saveDomainChanges: function() {
this.collection.each( function(model)
{
var ref = model.get('ref');
if ($('#' + ref).val() != model.get('domain')) {
$('.save-domains').prop('disabled', true);
var fields = $(this.el).find('form').serializeArray(), data = {};
$.each(fields, function(i, pair)
{
data[pair.name] = pair.value;
});
model.save(data, {
wait:true,
success: function(model, response, event)
{
// Pass each success to notification function
},
error: function(model, response, event)
{
// Pass each error to notification function
}
});
}
});
$('.save-domains').prop('disabled', false);
},
removeDomain: function() {
this.collection.each( function(model)
{
var ref = model.get('ref');
if ($('#remove-' + ref).prop('checked'))
{
model.destroy({
wait:true,
success:function() {
// Pass each success to notification function
},
error: function() {
// Pass each error to notification function
}
});
}
});
}
});
これを手伝ってくれる人に事前に感謝します!:)