2017-02-09 17 views
0

我已经在该区域内定义了LayoutView &。对于一个区域,我附加了CompositeView。在CompositeView中的部分我加入UI块像marionettejs - 获取哪个元素事件生成

ui: { 
     checkbox: '#DivGrp1 input[type=checkbox]' 
    } 

    triggers: { 
     'change @ui.checkbox': 'chk:clicked' 
    }, 

在父类&触发块,我听的事件像

childEvents: { 
    'chk:clicked':function(e){ 
    // e is referring to view & not checkbox 
    } 
} 

我想访问哪个事件是提高投入要素。这里的复选框已被选中或未选中。

这些复选框是动态的。

感谢 Aniruddha

+0

正如文档[LayoutView childEvents](http://marionettejs.com/docs/v2.4.4/marionette.layoutview.html#layoutview-childevents)中所述:_请注意,childEvents处理程序的第一个参数是子视图本身。你需要传递一个消息(或者在你的情况下是一个复选框ID)来接收它作为父视图处理程序的第二个参数。 – Ritesh

回答

1

简短的回答:访问DOM中拥有该元素的视图。然后使用它的trigger方法手动触发事件传递父视图所需的操作结果。

我不是木偶专家,但总的来说,从其他视图直接访问某个视图的元素并不是一个好主意。

如果要访问事件对象,请使用events属性执行需要在子视图本身中访问DOM的操作。执行操作,然后使用trigger()方法触发事件父视图正在侦听。

这是一个:example from the official docs它有一个相似的结构。

如果您必须直接访问该元素,则可以在trigger()方法中将它的引用作为参数传递。但是这不被推荐。

相关问题