Backbone.js中视图绑定的事件顺序是什么

What is the order of events binded by Views in Backbone.js?

本文关键字:事件 顺序 是什么 绑定 js 视图 Backbone      更新时间:2023-09-26
var ViewA = Backbone.View.extend({
        events: { 'click a': 'do_something' },
        do_something: function() { console.log('ViewA::do_something()'); }
});
var ViewB = Backbone.View.extend({
        events: { 'click a.some_class': 'do_something' },
        do_something: function() { console.log('ViewB::do_something()'); }
});
////////
<a class="some_class">Click me</a>

我有两个视图设置绑定到点击事件,如上所示。出于某种原因,ViewA的处理程序总是首先被调用。

我试过:

  • 更改JS的加载顺序
  • 更改视图的初始化顺序

这让我相信这取决于选择器的特殊性,但考虑到ViewB中的选择器比ViewA中的选择器更特定,这也没有意义——为什么会首先调用更通用的选择器?

好吧,我想好了——对于将来遇到这种情况的人来说。事件的顺序由(按重要性顺序(确定:

  1. 视图中"el"元素的特殊性
  2. 事件选择器的特殊性
  3. 视图的初始化顺序