【问题标题】:Detect click on itemview container in Backbone/Marionette检测单击 Backbone/Marionette 中的 itemview 容器
【发布时间】:2016-01-07 01:25:23
【问题描述】:

我有以下项目视图:

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

使用以下车把模板:

<div class="clicktarget">
Stuff Goes Here
</div>

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

如果我们更改了.clicktarget 处的ui 哈希和指向项,则点击已注册。但这似乎无缘无故地给了我一个&lt;div&gt;&lt;div&gt;stuff goes here&lt;/div&gt;&lt;/div&gt; 结构。这是检测对整个项目视图 DOM 元素的点击的唯一方法吗?

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

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

    events:{
      'click' :'itemClicked'
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2015-11-12
      相关资源
      最近更新 更多