2

У меня есть одностраничное приложение, использующее магистраль для управления коллекцией моделей.Магистраль: пакетные модели сохранения в одном запросе?

Иногда эта коллекция становится довольно большой, и если пользователь выполняет операции, которые меняют многие из них, это может привести к тому, что вызов .save будет вызван много раз. В некоторых случаях, когда сотни аякс-запросов срабатывают одновременно.

Позволяет ли какой-либо способ выполнять такие операции в одном запросе? Или есть предпочтительный шаблон для использования?

Спасибо за любой совет.

ответ

5

Существует нет встроенного способа пакетных операций для Backbone.Collection. Обычный шаблон для использования заключается в том, чтобы обернуть коллекцию в Backbone.Model и просто перезаписать метод toJSON. Затем вы можете рассматривать это как любую другую Backbone.Model и просто вызывать save().

var Post = Backbone.Model.extend({ 
... 
}); 

var Posts = Backbone.Collection.extend({ 
    model: Post, 
    ... 
}); 

var PostsList = Backbone.Model.extend({ 
    url: '/path/for/bulk/operations', 

    toJSON: function() { 
    // the model in this case is the Posts collection 
    return this.model.toJSON(); 
    } 
}); 

Другим вариантом является просто добавить метод save() в вашу коллекцию и делегат Backbone.Sync

var Posts = Backbone.Collection.extend({ 
    ... 

    save: function(options) { 
    return Backbone.sync('create', this, options); 
    } 
}); 
+0

Большого спасибо, как звук, как потенциальные проспекты – Chris