2017-02-09 12 views
0

その領域内にLayoutView &を定義しました。ある地域では、CompositeViewを添付しました。私は、親クラスでmarionettejs - 生成される要素イベントの取得

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

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

ようなUIブロック&トリガーブロックを追加CompositeViewのセクションでは、私は、イベントが昇給されている入力要素にアクセスしたい

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

のようなイベントを聴いています。チェックボックスはチェックされているかチェックされていません。

これらのチェックボックスは動的です。

おかげ Aniruddha

+0

doc [LayoutView childEvents](http://marionettejs.com/docs/v2.4.4/marionette.layoutview.html#layoutview-childevents)に記載されているように:_ childEventsハンドラの最初の引数は、子ビュー自体._親ビューのハンドラの第2引数としてメッセージを受け取るには、メッセージ(または、あなたの場合はチェックボックスID)を渡す必要があります。 – Ritesh

答えて

1

短い答え:要素を所有するビューのアクセスDOM。それから、親ビューに必要な操作の結果を渡すメソッドtriggerを使用して、手動でイベントをトリガーします。

私はマリオネットのエキスパートではありませんが、一般的に言えば、他のビューから1つのビューの要素に直接アクセスすることは好ましくありません。

子オブジェクト自体にDOMアクセスが必要な操作を行います。イベントオブジェクトにアクセスする場合は、events属性を使用します。操作を実行して、親ビューがtrigger()メソッドを使用してリッスンしているイベントをトリガーします。

同様の構造を持つexample from the official docsがあります。

要素に直接アクセスする必要がある場合は、trigger()メソッドの引数として参照を渡すことができます。しかし、これはお勧めしません。

関連する問題