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。