对多个模板使用 1 个事件处理程序
Using 1 event handler for multiple templates
我一直在使用通常的 Blaze Template.events 方式处理事件。目前,我有许多事件在多个模板中都是相同的。
我很好奇是否有人知道一种方法来处理多个模板的事件,而不必为每个不同的模板使用多个 Template.events 调用。
(您可以只编写一个事件处理程序以应用于多个模板)。
如果我切换到 Meteor-React,我认为这是可以做到的,但我现在宁愿不这样做。
您可以使用这个名为 meteor-body-events
的包
meteor add gwendall:body-events
他们的 git 页面是这样的:https://github.com/gwendall/meteor-body-events
我在我以前的项目中使用过它并且它按预期工作,但现在我看到该项目不再维护。我相信它仍然可以按预期工作。
来自他们 git 页面的示例:
Template.body.events({
"click .btn": function(e, data, tpl) {
// e -> jquery event
// data -> Blaze data context of the DOM element triggering the event handler
// tpl -> the parent template instance for the target element
}
})
所以基本上,您将事件侦听器标记到主体一次,它将适用于所有模板。
我一直在使用通常的 Blaze Template.events 方式处理事件。目前,我有许多事件在多个模板中都是相同的。
我很好奇是否有人知道一种方法来处理多个模板的事件,而不必为每个不同的模板使用多个 Template.events 调用。
(您可以只编写一个事件处理程序以应用于多个模板)。
如果我切换到 Meteor-React,我认为这是可以做到的,但我现在宁愿不这样做。
您可以使用这个名为 meteor-body-events
meteor add gwendall:body-events
他们的 git 页面是这样的:https://github.com/gwendall/meteor-body-events
我在我以前的项目中使用过它并且它按预期工作,但现在我看到该项目不再维护。我相信它仍然可以按预期工作。
来自他们 git 页面的示例:
Template.body.events({
"click .btn": function(e, data, tpl) {
// e -> jquery event
// data -> Blaze data context of the DOM element triggering the event handler
// tpl -> the parent template instance for the target element
}
})
所以基本上,您将事件侦听器标记到主体一次,它将适用于所有模板。