仅将一个或按钮事件委托给Backbone

Igo*_*nov 2 javascript events backbone.js

我有html内容,如:

<button class="submit">Save</button>
Run Code Online (Sandbox Code Playgroud)

并查看如下:

var MyView = Backbone.View.extend({
 events: {
    'click .submit': 'save'
 },

 save: function() {}
}
Run Code Online (Sandbox Code Playgroud)

当我点击此按钮时,我发现骨干网不会处理此事件,而是进行标准的浏览器操作(至少在Chrome上).<a>标签相同.我的意思是Backbone没有绑定这个标签.

目前我<span>用于按钮,它工作正常,但我想知道为什么我不能使用按钮的标准标签?如何删除标准浏览器事件,并使用骨干<a><button>

dir*_*ira 5

这些事件只是"听众" - 他们被告知事件已经发生.如果你想要停止活动,你必须这样做

save: function(event) {
   event.preventDefault();
   event.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)

要检查Backbone是否处理事件,请检查save单击时是否调用了listener().Backbone不会停止默认行为,您必须自己在事件处理函数中执行此操作.

另一个建议是:将你的按钮放在一个form并添加一个事件监听器submit form.如果用户使用键盘提交表单(单击事件仅适用于鼠标),这也将起作用.