我有以下项目视图:
return Marionette.ItemView.extend({ template:tpl, tagName: 'div', className: 'v_itv_record_type_item', events:{ 'click @ui.item':'itemClicked' }, ui:{ item:'.v_itv_record_type_item' }, itemClicked:function(e){ console.log('clicked'); } });
使用以下把手模板:
Stuff Goes Here
如果单击其中一个项目视图,则不会注册click事件.我理解Backbone限制只访问DOM的视图片段,但显然这并没有扩展到包含div本身,即使包含div的内容不是任何模板,父视图或其他部分的一部分.
如果我们在.clicktarget
点击时更改了ui哈希和点项,则会注册.但这给了我一个
看似没有理由的结构.这是检测整个项目视图DOM元素的单击的唯一方法吗?
您可以通过省略选择器在视图元素上注册click事件:
events:{ 'click' :'itemClicked' }
请注意,如果在视图级别有一个事件处理程序,视图中的所有点击都会冒泡并触发它的处理程序,除非它被停止(event.stopPropagation())
在途中.这是预期的行为.