Подтвердить что ты не робот

Метеор как создать глобальное событие?

Как создать событие, которое будет запущено на любой странице?

При создании помощника в шаблоне основного макета он не работает.

Template.layout.events
  'click': ->
    console.log "you clicked on the site"
4b9b3361

Ответ 1

Вы можете использовать Template.body.events вместо Template.layout.events для создания событий для любого шаблона, который будет применяться ко всему в <body>

Документы: http://docs.meteor.com/#/full/template_body

Ответ 2

вам понадобится специальный пакет для создания глобального события.

установить

meteor add gwendall:body-events

и вы можете использовать события из Template.body.events в каждом шаблоне

Пример

Template.body.events({
   'click .myClass':function(){
       alert("BODY EVENT");
   }
});

или если вам нравится новый синтаксис

Template.body.events({
   'click .myClass'(){
       alert("BODY EVENT");
   }
});

Ответ 3

Ни один из ответов в настоящее время не является "неправильным" как таковым, они просто работают в разных ситуациях:

Карты событий, Template.body.events({}), на Template.body не применяются к элементам, добавленным в тело через Blaze.render, Iron -Router, Flow-Router jQuery или DOM API или сам элемент body. Если вы используете вышеизложенное, вам нужно будет добавить пакет body-events, чтобы иметь возможность использовать карту событий на теле, используя следующую команду:

meteor add gwendall:body-events

Если вы не используете ни один из пакетов рендеринга шаблонов выше, вы можете напрямую добавить их на карту событий тела, используя следующий код:

Template.body.events({
  'click': function () {
    alert("clicked on the page. oh yeah!");
  }
});

пь. кажется, последняя версия Blaze позволяет напрямую добавлять карты событий в тело