2017-02-09 24 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 является child view. Вам необходимо передать сообщение (или идентификатор checkbox в вашем случае), чтобы получить его как второй аргумент обработчика родительского представления. – Ritesh

ответ

1

Короткий ответ: DOM Доступ в представлении, которому принадлежит этот элемент. Затем вручную инициируйте событие, используя метод trigger, передающий результат операции, требуемый родительским представлением.

Я не эксперт по марионетке, но, вообще говоря, нецелесообразно напрямую обращаться к элементу одного вида из других представлений.

Выполнение операций, требующих доступа DOM в представлении дочернего элемента, если вы хотите получить доступ к объекту события, используйте атрибут events. Выполните операции, а затем инициируйте родительское представление события, слушая использование метода trigger().

Это: example from the official docs, который имеет аналогичную структуру.

Если у вас ДОЛЖЕН иметь прямой доступ к элементу, вы можете передать его ссылку в качестве аргумента в методе trigger(). Но это не рекомендуется.