backbone.js - 检测点击 Backbone/Marionette 中的 itemview 容器

标签 backbone.js marionette

我有以下项目 View :

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');
        }
    });

使用以下 Handlebars 模板:
<div class="clicktarget">
Stuff Goes Here
</div>

如果您单击这些项目 View 之一,它不会注册单击事件。我知道 Backbone 只限制访问 DOM 的 View 切片,但显然这并没有扩展到包含 div 本身,即使包含 div 不是任何模板、父 View 或其他的一部分。

如果我们在 .clicktarget 处更改 ui 哈希和点项目点击已注册。但这给了我一个 <div><div>stuff goes here</div></div>结构似乎没有原因。这是检测对整个项目 View DOM 元素的单击的唯一方法吗?

最佳答案

您可以通过省略选择器在 View 元素上注册点击事件:

events:{
  'click' :'itemClicked'
}

请注意,如果您在 View 级别有一个事件处理程序,则 View 内的所有点击都会冒泡并触发它的处理程序,除非它被停止( event.stopPropagation()) 在途中。这是预期的行为。

关于backbone.js - 检测点击 Backbone/Marionette 中的 itemview 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645874/

相关文章:

javascript - Backbone Marionette 集合过滤

javascript - Backbone.Marionette 扩展区域阻止 onClose() 函数调用

javascript - 返回按钮不会重新触发主干应用程序

javascript - 使用 Marionette 对 Collection View 中的项目进行分组

javascript - Require.js 和可重用的 UI 函数

javascript - Backbone.js collection.where 数组包含字符串

javascript - 过滤 Backbone 集合时内存泄漏

javascript - 未捕获的语法错误 : Unexpected token < on line 1 of http://localhost:25194/

javascript - Backbone/Marionette CollectionView - 在模板内渲染?

javascript - backbone.js - 事件,知道点击了什么