2

这是我的 ItemView 的代码片段:

class List.GridRow extends Backbone.Marionette.ItemView
  tagName: 'tr'
  triggers:
    'click': 'row:clicked'

然后在我的复合视图中,我正在这样做:

class List.GridView extends Backbone.Marionette.CompositeView
  template: 'mapping/list/templates/grid'
  itemView: List.GridRow
  itemViewContainer: 'tbody'

  initialize: (options) ->
    @listenTo @, 'itemview:row:clicked', (itemView, data) -> @rowClicked(itemView, data)

  rowClicked: (clickedItemView, data) =>

    # I need the original event information to check of the ctrl or shift key was pressed?
    #if !e.ctrlKey && !e.shiftKey

我在这里要做的是将原始事件信息传递给触发器处理程序,但我还没有弄清楚?有没有办法用木偶做到这一点?我错过了什么吗?

谢谢!

4

1 回答 1

7

的目的triggers是为视图中的最小需求提供最小的事件配置,同时还防止抽象泄漏。将原始事件 args 传递出视图会破坏视图的抽象,这应该是控制事件 args 的内容。

如果您需要控制和转换键信息,您将希望避免triggers配置并使用发布所需信息的标准事件。


class List.GridRow extends Backbone.Marionette.ItemView
  tagName: 'tr'
  events:
    'click': 'rowClicked'
  rowClicked (e) ->
    @trigger "row:clicked", 
      control: e.ctrlKey, 
      shift: e.shiftKey
于 2013-03-21T21:33:23.950 回答