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

Events 如何使用Meteor js触发自定义事件,events,meteor,Events,Meteor,有可能用Meteor触发自定义事件吗?我发现触发自定义jquery事件不起作用,因为Meteor事件与jquery()是分开的 因此,如果我有类似于: Template.foo.events({ 'mouseenter .box, makeSelected .box': function() { ... } }) 如果我能按照以下思路做些事情,那就太好了: Meteor.trigger($('.box')[0], 'makeSelected') 我目前的解决方法是将我想要的id存储为

有可能用Meteor触发自定义事件吗?我发现触发自定义jquery事件不起作用,因为Meteor事件与jquery()是分开的

因此,如果我有类似于:

Template.foo.events({
    'mouseenter .box, makeSelected .box': function() { ... }
})
如果我能按照以下思路做些事情,那就太好了:

Meteor.trigger($('.box')[0], 'makeSelected')

我目前的解决方法是将我想要的id存储为dom元素上的
data id=“{{{u id}}”
,然后使用它在会话中修改一个键,但是触发事件感觉更“枯燥”。

Meteor目前似乎不支持自定义事件,但您可以始终使用jQuery(或任何您想要的)要创建自定义事件,然后确保它们已通过模板上的
渲染事件连接到各自的元素,请执行以下操作:

Template.foo.rendered = function() {
  attachEvents();
}

显然,现在可以使用jQuery事件触发和标准Meteor事件侦听语法来实现。查看引导转盘的代码,它通过执行以下操作发出一个自定义jQuery事件:

var slideEvent = $.Event('slide.bs.carousel', {
    // event state
})
this.$element.trigger(slideEvent)
我通过以下方式成功地聆听了这一事件:

Template.carousel.events({
    'slide.bs.carousel': function (event, template) {
        // event handler code here...
    }
});

我惊喜地发现,引导程序(jQuery)事件与Meteor是多么容易地结合在一起。

当您以jQuery方式触发事件时,Meteor会做出反应(假设已安装)

单击
#showOffered
#searchFilter
设置为特殊值并过滤结果(未显示):


这一点早在五月份就得到了回答:@WernerVesterås:他在第二句话中链接到了这个问题。:-)@Rahul早上太早了…:-启动时为什么需要给附件打电话?不管怎样,它不会总是被调用。渲染吗?
$('.box').mouseenter();
<template name="brokerProducts">
            <div class="input-group">
              <input id="searchFilter" type="text" class="filter form-control" placeholder="Search for ..." value="{{filterValue}}">
              <span id="showOffered" class="btn input-group-addon">Show Offered</span>
            </div>
</template>
Template.brokerProducts.events({
  'input .filter': (event, templateInstance) => {
    templateInstance.filter.set(event.currentTarget.value);
  },
  'click #showOffered': (event, templateInstance) => {
    $('input#searchFilter').val('show:offered').trigger('input');
  }
})