【问题标题】:Calling custom events on Meteor 1.2在 Meteor 1.2 上调用自定义事件
【发布时间】:2016-06-21 04:28:15
【问题描述】:

我正在尝试从路由器控制器调用我在流星上创建的自定义事件,但没有成功。 这是我试图触发的事件:

Template.foo.events ({

"click button.my_event" : function (e) {
//event
}
})

我尝试使用 jQuery 方法 .trigger() 来调用它,如下所示:

action : function () {
$('.my_event').trigger('click button.my_event');  
}

失败了。 后来我认为事件本身需要使用 jQuery 事件层才能使用 trigger() 所以我尝试了:

"click button.my_event" : $(".my_event").on("click",function (e) { 
//event
}),

这种方法也失败了。 我错过了什么吗?

编辑:当我将其称为自定义事件时,我说错了。我真正的意思是激活一系列方法的常规点击事件(就像任何常规事件一样)。

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    您将事件类型指定为click。这就是它不起作用的原因。

    以下是工作示例:

    <template name="Test">
        <button class="trigger">Trigger</button>
        <button class="test-button">Test</button>
    </template>
    

    JS

    Template.Test.events({
      'click .trigger': function (event, tmpl) {
        tmpl.$('.test-button').trigger('myEvent');
      },
    
      //custom event handler
      'myEvent .test-button': function (event, tmpl) {
        console.log('Hello, myEvent');
      }
    });
    

    【讨论】:

    • 我认为我的问题表述错误;我正在使用点击事件来执行某些功能,这就是我所说的“自定义事件”。我真正想要的是以编程方式触发该事件。
    • @user43825 那你只需要tmpl.$('.button.my_event').click()
    • 我正在考虑在 Template.Tests.events() 之外执行此操作,我认为您的方法仅在我从其他事件中调用它时才适用。我的问题是从铁路由器触发。
    • @user43825 然后使用相同的代码但没有tmpl. 部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多