2

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 タッチ ライブラリをうまく統合した人はいますか? 他の投稿の 1 つでjquery.fingersが参照されていることに気付きましたが、それも機能しませんでした。

4

3 に答える 3

3

{{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 要素が取得されると機能しません。更新または追加されました。

于 2012-07-01T01:52:19.990 に答える
0

私もしばらくの間、hammer.js を Meteor と連携させようと試みてきましたが、今のところ成功していません。どうすればそれを機能させることができるかを知りました。実際には本当に簡単であることがわかりました。ここでハンマーのjqueryバージョンを使用していることに注意してください。

Template.name.events({
    'swipe .article': function() {
        //your functions
    }
})

Template.name.rendered = function () {
    this.$('.article').hammer();
}
于 2014-12-14T16:21:35.560 に答える