1

我有以下代码:

App.Views.UseCategory = Backbone.View.extend({
  template: HandlebarsTemplates['uses/useCategory'],

  initialize: function() {
    _.bindAll(this, 'render', 'addCategory');
    this.render();
  },

  events: {
    'submit #addCategoryForm': 'addCategory'
  },

  render: function() {
    $(this.el).append(this.template(this.options));
    return this;
  },

  addCategory: function(event) {
    event.preventDefault();
    var self = this;
    var useCategoryId = $('select[id=use_category_id]').val();

    this.model.set('category_id', parseInt(useCategoryId,10));
    this.model.save({ success: console.log('success') });
  }
});

上面的代码有效并触发成功回调,所以我在控制台中收到“成功”。

但是为什么当我将该 addCategory 函数更改为:

  addCategory: function(event) {
    event.preventDefault();
    var self = this;
    var useCategoryId = $('select[id=use_category_id]').val();

    this.model.set('category_id', parseInt(useCategoryId,10));
    console.log('save?');
    this.model.save({ success: this.addedCategory, error: function() { console.error(arguments) } });
  },

  addedCategory: function() {
    console.log('success');
  }

成功回调不再触发,为什么?

编辑:

在此处输入图像描述

4

1 回答 1

1

当你这样做时:

this.model.save({ success: console.log('success') });

您已经调用了控制台日志。你应该做的是(不一样):

this.model.save({ success: function() {
    console.log('success')
} });

您了解区别还是需要澄清?

事实上,我怀疑你的success回调永远不会被调用。

编辑:

model.save(data, opts)有两个参数。你应该做:

this.model.save({}, { success: function() {
    console.log('success')
} });
于 2012-11-08T23:49:02.907 回答