如何使用Meteor js触发自定义事件

MrC*_*les 6 events meteor

是否可以使用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中的键,但是能够触发事件感觉更"干".

Rah*_*hul 5

Meteor目前似乎不支持自定义事件,但您可以随时使用jQuery(或任何您想要的)来创建自定义事件,然后确保使用rendered模板上的事件将它们重新附加到各自的元素:

Template.foo.rendered = function() {
  attachEvents();
}
Run Code Online (Sandbox Code Playgroud)


Don*_*uts 5

显然,现在使用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的关系很容易.