javascript - 无法让 Meteor 与轻量级 JS 触摸库 Hammer.js 配合使用

标签 javascript meteor touch hammer.js

我已阅读 the existing posts关于在 Meteor 中集成触摸事件。

明智的做法似乎是,虽然 API 仍在不断发展,但最好避免使用基于包的方法,而只使用轻量级库来处理在客户端上显式包含的触摸事件。

我想我应该尝试一下 hammer.js 。 (我不想要大量的 JQuery 移动设备。)

我可以让它在 Meteor 之外正常工作。

在 Meteor 中,我只是尝试其演示代码的简单版本:

var $sw = $('#swipeme');
$sw.on('hold tap swipe doubletap transformstart transform transformend dragstart drag dragend swipe release', function (event) {
event.preventDefault();
console.log("Type: " + event.type + ", Fingers: " + event.touches.length + ", Direction: " + event.direction + "<br/>");
});

我都尝试过:

-主 application.js 文件中的 $(document).ready 内,以及

-定义为相关模板的 template.js 文件中的函数,然后我在该模板的事件对象内部调用:

Template.myTemplate.events = {
'click #myElement': function(){
myTouchFunction();
}
}

这两种方法都不起作用。

我做错了什么?

还有其他人在 Meteor 中成功集成了 JS 触摸库吗?我注意到jquery.fingers在其他帖子中引用过,但我也无法使其工作。

最佳答案

{{swipeme}} 添加到 myTemplate 并尝试使用 Meteor.defer ,它将在模板渲染后运行代码,确保它可以运行:

Template.myTemplate.swipeme = function () {
  Meteor.defer(function() {
    var $sw = $('#swipeme');
    $sw.on('hold tap swipe doubletap transformstart transform transformend dragstart drag dragend swipe release', function (event) {
      event.preventDefault();
      console.log("Type: " + event.type + ", Fingers: " + event.touches.length + ", Direction: " + event.direction + "<br/>");
    });
  });
};

或者,您也可以使用 Meteor.startup 但可能不能保证每次都能工作,因为它只运行一次(不知道它是否必须在第一个 DOM 之后运行)添加元素),一旦更新或添加任何 DOM 元素,该方法将不起作用。

关于javascript - 无法让 Meteor 与轻量级 JS 触摸库 Hammer.js 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278426/

相关文章:

javascript - 在 IE、FF 和 Safari 中运行 Ajax

javascript - AngularJS:CSS 类、ng-repeat、搜索框

javascript - 在 Node 中的不同文件之间使用 Node Express session

javascript - JS。遍历多维数组以计算每列中元素的出现次数

javascript - 如何使用meteor-leaflet来整合leaflet和meteor?

javascript - 统计 Meteor 中帖子的评论数

javascript - 将代码放在 Jasmine 测试 + Meteor 的正确目录中

android - 为什么这个 MotionEvent 模拟不起作用?

android - 我们可以将触摸板或触控板值模拟到 android 平板电脑吗?

objective-c - 同时在多个 UIView 上接收触摸事件