Как я могу прослушать одно событие от двух обработчиков шаблонов?

Например, в приведенном ниже примере вызывается только обработчик события foo. (Что странно — я ожидал, что будет вызван обработчик события bar, поскольку элемент <form> находится в шаблоне bar.)

<template name="foo">
  {{#bar klass="down"}}
    <button type="submit">test</button>
  {{/bar}}
</template>

<template name="bar">
  <form>
    {{> Template.contentBlock}}
  </form>
</template>

Template.foo.events 
  'submit form' ->
    alert 'foo'

Template.bar.events 
  'submit form' ->
    alert 'bar'

person Loren    schedule 31.01.2015    source источник
comment
В meteorpad с coffeescript, преобразованным в js (пакет coffeescript не работал в meteorpad) ваш код работает, запуская два события. Может быть, я сделал удачную опечатку, но я думаю, что ваша проблема в другом.   -  person user728291    schedule 31.01.2015
comment
Это я с опечаткой в ​​кодовой базе, спасибо за репродукцию. Оба вызываются, bar событие сначала.   -  person Loren    schedule 01.02.2015


Ответы (2)


Взгляните на этот пакет, в нем вы объявляете только 1 обработчик событий, который будет доступны в любом шаблоне, который вы хотите.

Пример Из документов.

   //here we declare 1 only event
    Template.foo.events({
      'click button': function (event, template) {
        console.log("foo button clicked");
      }
    }); 

//here we inherit 
Template.foo2.inheritsEventsFrom("foo"); //where foo2 is another Template, and now have access to the event from foo template

Удачи

person Ethaan    schedule 31.01.2015
comment
Спасибо, я понял, как можно использовать этот пакет, чтобы один и тот же обработчик событий вызывался для обоих шаблонов. Однако я хочу, чтобы вызывались две отдельные функции. Один в bar всегда будет одним и тем же, но обработчики в шаблонах, которые включают bar, будут отличаться. - person Loren; 31.01.2015

Ответ о том, как это сделать, - это код в вопросе, который на самом деле работает так, как хотелось бы. Вызывается обработчик bar, за которым следует обработчик foo.

http://meteorpad.com/pad/kLwjq8N7T5fb2qwjA/event%20bubbling

person Loren    schedule 31.01.2015