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、ビュー内の最小限のニーズに対して最小限のイベント構成を提供すると同時に、漏れやすい抽象化を防ぐことです。元のイベント引数をビューの外に渡すと、ビューの抽象化が壊れます。これは、イベント引数の制御下にあるべきものです。

コントロール キーとシフト キーの情報が必要な場合は、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 に答える