2013-08-18 3 views
4

Я пытаюсь добавить новые модели в коллекцию (на этот раз я не сохраняю на сервере, просто делаю это в памяти). У меня есть код ниже:Добавление новых моделей в базовую коллекцию, а не замену

$(function() { 

//Model 

var Story = Backbone.Model.extend({ 

    defaults: { 
    'title': 'This is the title', 
    'description': 'Description', 
    'points': 0 
    }, 

    url: '/' 

}); 

//Collection 

var Stories = Backbone.Collection.extend({ 

    model: Story, 

    url: '/' 

}); 

//View 

var BaseView = Backbone.View.extend({ 

    el: $('#container'), 

    events: { 
    'click .inner': 'onClickInner' 
    }, 

    onClickInner: function() { 

    this.options.x++; 

    this.story.set({ 
     'title': 'This is my collection test ' + this.options.x, 
     'description' : 'this is the description' 

    }); 

    this.stories.add(this.story); 

    this.render(); 

    }, 

    initialize: function() { 

    this.stories = new Stories(); 
    this.story = new Story(); 

    }, 

    render: function(){ 

     console.log(this.stories); 

    } 

}); 

//Initialize App 

    var app = new BaseView({ 
    'x' : 0 
    }); 

}); 

Мой вопрос заключается в этом, каждый раз бежит «onClickInner», я хочу, чтобы добавить новую модель в коллекции. Однако, в моем коде это заменяет.Существует модель в коллекции. Как добавить новые модели и не заменить их?

Спасибо за ваше время.

ответ

11

Это происходит потому, что вы обновляете текущую модель вместо добавления новой новой. Чтобы исправить это, вы должны просто выполнить метод add в своей коллекции. Этот метод добавляет переданные данные в новую модель в вашу коллекцию:

this.stories.add({ 
    'title': 'This is my collection test ' + this.options.x, 
    'description' : 'this is the description' 
}); 
+0

Это исправляет проблему, спасибо. Я смутился тем, что делал метод «set» на модели. Я думал, что создаю новый экземпляр модели и добавлю ее в коллекцию. – CarbonDry

+0

Подождите, если я передам данные, подобные приведенным выше, в мою коллекцию, в чем смысл использования модели? Разве это не делает модель полностью избыточной, поскольку я написал ее выше? – CarbonDry

+0

Если вы не планируете использовать модель, вы можете ее удалить. –

Смежные вопросы