如何创建可在任何页面上运行的活动?
在主布局模板上创建帮助程序时,它无法正常工作。
Template.layout.events
'click': ->
console.log "you clicked on the site"
答案 0 :(得分:15)
您可以使用Template.body.events
代替Template.layout.events
为任何适用于<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
的最新版本