javascript - meteor JS : How should I bind events to the window in Meteor?

标签 javascript event-handling meteor mouseevent

我正在尝试检测 Meteor 窗口外的鼠标弹起。我试过了,但是 window 似乎不起作用:

Template.layout.events({
  'mouseup window' : function(e) {
    console.log("mouseup");
  }
});

我应该如何将事件绑定(bind)到 Meteor 中的窗口?

最佳答案

下面的代码片段将在创建模板时绑定(bind)事件处理程序,并在销毁模板时解除绑定(bind)。应该给你你正在寻找的行为。

var layoutMouseUpHandler = function(e) {
    console.log('window.mouseup');
};

Template.layout.onCreated(function() {
    $(window).on('mouseup', layoutMouseUpHandler);
});

Template.layout.onDestroyed(function() {
    $(window).off('mouseup', layoutMouseUpHandler);
});

请注意,该事件绑定(bind)在 onCreated 处理程序中,因此当事件触发时模板可能尚未呈现。如果您的处理程序与 DOM 交互,您将需要检查它。它未绑定(bind)在 onRendered 处理程序中,因为如果重新呈现模板,这将导致您的 mouseup 处理程序被绑定(bind)多次。

编辑:正如 Serkan 在下面提到的,新的 UI 引擎仅在模板插入 DOM 时调用一次 onRendered。如果您的事件处理程序将与 DOM 交互,这使其成为比 onCreated 更好的选择。

关于javascript - meteor JS : How should I bind events to the window in Meteor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21486667/

相关文章:

javascript - 同步(阻塞)ajax 调用可以阻塞浏览器的用户界面吗?

javascript - mongodb - 汇总和展开外国引用文件

meteor - 是否可以在 Meteor 中设置全局未捕获的异常处理程序?

javascript - Bootstrap popover 不是第一次出现

c# - 是否可以为 bool 值切换时制作类似事件处理程序的东西?

events - 为什么在函数调用上使用事件监听器?

javascript - event 是一个全局变量,可以在回调链中的任何地方访问吗?

meteor 0.9.x 更新

rest - Meteor:REST 集合 API 和身份验证

Javascript 从函数返回 Promise - Promise 链与变量