是否可以使用Meteor触发自定义事件?我看到触发自定义jquery事件不起作用,因为Meteor事件与jQuery是分开的(如这里所讨论的).
所以,如果我有类似的东西:
Template.foo.events({
'mouseenter .box, makeSelected .box': function() { ... }
})
Run Code Online (Sandbox Code Playgroud)
如果我可以按照以下方式做某事,那就太好了:
Meteor.trigger($('.box')[0], 'makeSelected')
Run Code Online (Sandbox Code Playgroud)
我目前的解决方法是只将我想要的id存储在data-id="{{_id}}"dom元素上,然后使用它来修改Session中的键,但是能够触发事件感觉更"干".
Meteor目前似乎不支持自定义事件,但您可以随时使用jQuery(或任何您想要的)来创建自定义事件,然后确保使用rendered模板上的事件将它们重新附加到各自的元素:
Template.foo.rendered = function() {
attachEvents();
}
Run Code Online (Sandbox Code Playgroud)
显然,现在使用jQuery事件触发和标准Meteor事件侦听语法.查看Bootstrap轮播的代码,它通过执行以下操作发出自定义jQuery事件:
var slideEvent = $.Event('slide.bs.carousel', {
// event state
})
this.$element.trigger(slideEvent)
Run Code Online (Sandbox Code Playgroud)
我通过以下方式成功地听取了这个事件:
Template.carousel.events({
'slide.bs.carousel': function (event, template) {
// event handler code here...
}
});
Run Code Online (Sandbox Code Playgroud)
我很惊喜地发现Bootstrap(jQuery)事件与Meteor的关系很容易.