0

我在主干中运行此代码,它将一些数据保存到服务器,

GroupModalHeaderView.prototype.save = function(e) {
  var $collection, $this;
  if (e) {
    e.preventDefault();
  }

  $this = this;
  if (this.$("#group-name").val() !== "") {
    $collection = this.collection;
    if (this.model.isNew()) {
      console.log("MODEL IS NEW");
      this.collection.add(this.model);
    }
    return this.model.save({ name: this.$("#group-name").val()}, {
      async: false,
      wait: true,
      success: function() {
        //console.log($this, "THIS");
        console.log('Successfully saved!');
        this.contentView = new app.GroupModalContentView({
          model: $this.model,
          collection: $this.collection,
          parent: this
        });
        this.contentView.render();
        return $this.cancel();
      },

    });
  }
};

这在我第一次运行时运行良好,但是如果我在保存第一条数据后再次运行它,它不会保存新数据,它只会更新最后保存的数据。所以我第一次保存它时运行一个 POST 请求,下次它运行一个 PUT 请求时,为什么会这样?

我不确定你是否需要这个,但这是我的初始化函数 -

GroupModalHeaderView.prototype.initialize = function() {
  _.bindAll(this)
}
4

2 回答 2

1

您的视图附加了一个模型对象。据我了解,您填写了一些表格,将他们的数据放入模型并保存模型。但是一直以来,您只有一个模型对象,并且您只更新它的数据。如果您想在保存模型后创建一个新对象,只需添加一行:

this.model = new YourModelClass();

就在 console.log('Successfully saved!');

于 2013-07-11T10:50:39.413 回答
0

从主干文档:

如果模型是New,则保存将是“创建”(HTTP POST),如果模型已存在于服务器上,则保存将是“更新”(HTTP PUT)。

如果即使模型是新的,您也想发出 post 请求,只需覆盖默认的保存实现并调用 Backbone.sync(method, model, [options]) 并使用 'create' 作为传递的方法。

于 2013-07-11T10:50:08.280 回答