我有一个主干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) {
...
}
});
现在,我的模糊.socialInput调用了getSocial,但我的提交#book_form并没有。但是,控制台中没有任何错误。
答案 0 :(得分:2)
由于submit
中已有BooksView
的事件处理程序,因此可能首先调用它。但是在处理程序中,您调用e.preventDefault()
并阻止提交事件到达BookSocialView.getSocial()
最好重新考虑围绕book_form提交逻辑的策略。如果你想要多个处理程序工作,但也希望防止表单sumbission,我建议使用custom events。您处理程序仍然可以执行e.preventDefault()
,但也应触发其他事件,例如myModel.trigger('refreshSocial')