Изменить / обновить модель внутри коллекции - PullRequest
0 голосов
/ 07 марта 2012

Я пытаюсь найти способ изменить / обновить модель внутри коллекции без предварительной явной инициализации.

Идея состоит в том, что я создаю новый экземпляр коллекции, передавая ему хэш объектов. Я предполагаю, что Backbone автоматически создает экземпляры модели для каждого объекта (я прав?). Теперь, если это правда, я должен каким-то образом иметь возможность изменять / обновлять модель в коллекции, не так ли?

Я пробовал это, но это не работает:

serie = view.collection.get(serie_id);
serie.set({
    name: view.$('.series-name').val(),                 
    format: view.$('.series-format').val(),
    number: view.$('.series-number').val()
});

1 Ответ

0 голосов
/ 26 марта 2012

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

Я думаю, что вы говорите примерно так:

ViewCollection = Backbone.Collection.extend({
    model: Serie
});

myViewCollection = new ViewCollection();

// This will automatically create a Serie model instance and add it in your collection
myViewCollection.create({
    name: 'something',
    format: 'something',
    number: 'something'
});

Когда вы указываете атрибут модели вClass Collection, тогда вы можете использовать функцию create () вашей коллекции, которая создаст модель, просто передав хэш атрибутов.

Если вы настроите модель Serie с некоторыми произвольными значениями по умолчанию, выможет просто запустить цикл и создать кучу пустых моделей.Затем вы можете использовать код, который вы перечислили выше, чтобы изменить эти атрибуты, используя методы .get (id) .set ().Хотя есть веская причина, по которой вы хотите так поступить?

Такое чувство, что использование метода .create () по мере необходимости будет работать для большинства случаев использования.

...