Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我不能在主干中触发成功回调?_Javascript_Backbone.js_Backbone Views - Fatal编程技术网

Javascript 为什么我不能在主干中触发成功回调?

Javascript 为什么我不能在主干中触发成功回调?,javascript,backbone.js,backbone-views,Javascript,Backbone.js,Backbone Views,我有以下代码: App.Views.UseCategory = Backbone.View.extend({ template: HandlebarsTemplates['uses/useCategory'], initialize: function() { _.bindAll(this, 'render', 'addCategory'); this.render(); }, events: { 'submit #addCategoryForm':

我有以下代码:

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') });
  }
});
上面的代码工作并触发成功回调,所以我在控制台中收到“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');
  }
成功回调不再触发,为什么

编辑:

当您执行以下操作时:

this.model.save({ success: console.log('success') });
您已经调用了控制台日志。你应该做的是(不一样):

您是否理解差异或需要澄清

事实上,我怀疑您的
成功
回调从未被调用

编辑:

model.save(数据,选项)
接受两个参数。你应该做:

this.model.save({}, { success: function() {
    console.log('success')
} });
当您这样做时:

this.model.save({ success: console.log('success') });
您已经调用了控制台日志。你应该做的是(不一样):

您是否理解差异或需要澄清

事实上,我怀疑您的
成功
回调从未被调用

编辑:

model.save(数据,选项)
接受两个参数。你应该做:

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

您可以删除这一行:
uwk.bindAll(这是'render','addCategory')
,也不要在
render()
中调用
$.append()
,而是在多次渲染视图的情况下调用
$.html()
。嗯,我必须使用append,因为此视图是从另一个视图渲染的:您可以删除这一行:
.bindAll(这是“render”,“addCategory”)
,也不要在
render()
内部调用
$.append()
,而是在多次渲染视图的情况下调用
$.html()
。嗯,我必须使用append,因为此视图是从另一个视图渲染的:好的,我想我明白了。那么我应该怎样写才能正确呢?=>这似乎是正确的,您可以尝试:
this.model.save({success:this.addedCategory,error:function(){console.error(arguments)}})它应该可以帮助您调试它。另外,通过在前面添加
控制台.log
来检查
model.save()
是否真的被调用。嗯,我使用了你的建议,但现在我看不到“成功”或任何错误。我应该如何解释呢?model.save()似乎没有被调用,请尝试在它之前添加一个console.log。还要检查firebug中的“网络”选项卡,看看是否有您的ajax请求。ajax响应状态为200。我也看到保存?在控制台中。添加了上面的console.log。好的,我想我明白了。那么我应该怎样写才能正确呢?=>这似乎是正确的,您可以尝试:
this.model.save({success:this.addedCategory,error:function(){console.error(arguments)}})它应该可以帮助您调试它。另外,通过在前面添加
控制台.log
来检查
model.save()
是否真的被调用。嗯,我使用了你的建议,但现在我看不到“成功”或任何错误。我应该如何解释呢?model.save()似乎没有被调用,请尝试在它之前添加一个console.log。还要检查firebug中的“网络”选项卡,看看是否有您的ajax请求。ajax响应状态为200。我也看到保存?在控制台中。添加了如上所述的console.log。