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”时,我都想向集合中添加一个新模型。但是,在我的代码中,它替换了集合中的现有模型。如何添加新模型而不是替换?

谢谢你的时间。

4

1 回答 1

11

发生这种情况是因为您更新了当前模型而不是添加新模型。要修复它,您只需add对您的集合执行方法。此方法将传递的数据作为新模型添加到您的集合中:

this.stories.add({
  'title': 'This is my collection test ' + this.options.x,
  'description' : 'this is the description'
});
于 2013-08-18T12:14:35.443 回答