У меня есть CollectionView, который генерирует этот вид спискаBackbone - добавление записи в коллекции (внутри коллекции)
<ul>
<li> All </li>
<li> Option 2</li>
<li> Option 2<li>
<ul>
Вся информация о второй и третьей позиции в этом списке выбирается из DB. Но я бы хотел иметь вариант «Все». И я хотел бы, чтобы этот вариант был на первой позиции в моей коллекции.
Единственное, что мне пришло в голову, это перезаписать метод MyCollection add()
. Он работает очень хорошо, но я просто проверяю, нет ли лучшего/более простого способа сделать это.
MyCollection:.
define([ 'underscore', 'backbone', 'models/MyModel'], function(_, Backbone, MyModel){
var MyCollection = Backbone.Collection.extend({
model: MyModel,
initialize: function(opts) {
this.options = opts;
this.add({name: "All", icon_class="all"}) /// this doesn't work
},
add: function(models, options) {
models.unshift({name:"All", icon_class:"all"})
return this.set(models, _.extend({merge: false}, this.options));
},
});
return MyCollection;
});
(На стороне записки, коллекция сама по себе не извлечение данных из БД выборки на самом деле называется образуют (давайте называть его) ModelX
, распределяющая данные в другую коллекцию, которые также используют то же данные. Так как только ModelX
отделок, забирающих все данные, он передает данные все необходимые представления.)
я бы, скорее всего, вид добавить, что первый элемент во время рендеринга и держать его из коллекции целиком. – ivarni
, так что я считаю, что не стоит добавлять его из коллекции, верно? – Alexus
Это мое мнение по крайней мере. Это не так много, что вы добавляете его из коллекции, но добавляете его в коллекцию вообще. Это означает, что ваша коллекция больше не представляет фактические данные с сервера и может вернуться и преследовать вас позже. – ivarni