Events 如何使用Meteor js触发自定义事件
有可能用Meteor触发自定义事件吗?我发现触发自定义jquery事件不起作用,因为Meteor事件与jquery()是分开的 因此,如果我有类似于: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存储为
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');
}
})