流星如何创建全球事件?

时间:2015-02-26 17:26:11

标签: meteor

如何创建可在任何页面上运行的活动?

在主布局模板上创建帮助程序时,它无法正常工作。

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

3 个答案:

答案 0 :(得分:15)

您可以使用Template.body.events代替Template.layout.events为任何适用于<body>

中的任何内容的模板创建活动

文档:http://docs.meteor.com/#/full/template_body

答案 1 :(得分:5)

您需要一个特殊的包来创建一个全局事件。

安装

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");
   }
});

答案 2 :(得分:2)

目前这两个答案都不是“错误的”,它们只适用于不同的情况:

在Template.body do not get applied to elements added to the body via Blaze.render,Iron-Router,Flow-Router jQuery或DOM API或body元素本身上的事件映射Template.body.events({})。如果您使用上述内容,则需要添加包body-events,以便能够使用以下命令在身体上使用事件地图:

meteor add gwendall:body-events

如果您没有使用上面的任何模板渲染包,那么您可以使用以下代码直接添加到身体事件地图:

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

NB。它似乎是Blaze allows directly adding event maps to body

的最新版本