主干多个事件处理程序问题:同一事件只调用一个方法
Backbone multiple event handlers issue: only one method called for the same event
我有一个骨干js应用程序,有一个视图和许多子视图。
我的代码如下:
var BooksView = Backbone.View.extend({
events: {
"submit #book_form": "createBook"
},
render: function() {
var bookSocialView = new BookSocialView({
el: $('#the_books_social_div')
});
bookSocialView.render();
},
createBook: function(e){
e.preventDefault();
...
}
});
和我的bookSocialView看起来像:
var BookSocialView = Backbone.View.extend({
events: {
"blur .socialInput": "getSocial",
"submit #book_form": "getSocial"
},
render: function () {
...
},
getSocial: function (e) {
...
}
});
现在,我的blur . socialinput调用getSocial,但是我的submit #book_form没有。但是,控制台中没有任何错误。
因为在BooksView
中已经有了submit
的事件处理程序,它可能是首先被调用的。但是在处理程序中,你调用e.preventDefault()
,它阻止提交事件到达BookSocialView.getSocial()
最好重新考虑围绕book_form提交逻辑的策略。如果您希望多个处理程序工作,但又希望防止表单提交,我建议使用自定义事件。处理程序仍然可以执行e.preventDefault()
,但也应该触发其他事件,如myModel.trigger('refreshSocial')
相关文章:
- d3-js快速事件调用问题
- 使用按钮OnClick事件调用Javascript函数
- 了解在JavaScript中(在IE中)对某个事件调用了什么函数
- 如何使用onclick事件调用AngularJS控制器
- 无法从onclick事件调用JS函数
- 当多个 JS 事件调用同一个函数时,如何处理它们
- 为什么我从 JSLint 获得从事件调用的函数的“超出范围”
- 你能用onblur事件调用一个外部Javascript吗
- jquery mobile,从事件调用转换
- 如何使用C#为特定按钮事件调用JavaScript方法
- 如何在函数内部定义一个变量以供事件调用
- 如何从onClick事件调用对象函数
- 使用promise.then时,是否可以保留在单击事件调用堆栈中
- 如何断言间谍是使用jasmine通过点击事件调用的
- 使用AngularJS对超快速keyup和keydown事件调用函数
- 为同一标记中的两个不同事件调用两个javascript方法
- 事件调用方似乎无法正常工作
- 事件调用和范围问题
- 如何在 ng-repeat 中将变量值附加到事件调用
- j查询点击事件;调用特定函数(如果可用)