6

Meteorでカスタムイベントをトリガーすることは可能ですか?MeteorイベントはjQueryとは別のものであるため、カスタムjqueryイベントのトリガーが機能しないことがわかります(ここで説明します)。

だから私が次のようなものを持っていた場合:

Template.foo.events({
    'mouseenter .box, makeSelected .box': function() { ... }
})

次のようなことができたらいいのにと思います。

Meteor.trigger($('.box')[0], 'makeSelected')

私の現在の回避策は、必要なIDをdata-id="{{_id}}"dom要素に保存し、それを使用してセッションのキーを変更することですが、イベントをトリガーできると、より「ドライ」に感じられます。

4

4 に答える 4

5

renderedMeteorは現時点ではカスタムイベントをサポートしていないようですが、いつでもjQuery(または必要なもの)を使用してカスタムイベントを作成し、テンプレートのイベントでそれぞれの要素に再アタッチされていることを確認できます。:

Template.foo.rendered = function() {
  attachEvents();
}
于 2013-01-04T09:03:00.790 に答える
5

どうやらこれは、jQueryイベントトリガーと標準のMeteorイベントリスニング構文を使用して機能するようになりました。Bootstrapカルーセルのコードを見ると、次のようにしてカスタム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...
    }
});

Bootstrap(jQuery)イベントがMeteorと簡単にかみ合うことに嬉しい驚きを覚えました。

于 2015-04-29T19:35:43.067 に答える
0

Meteorは、jQueryの方法でイベントをトリガーすると反応します(インストールされていると仮定)

$('.box').mouseenter();
于 2016-07-29T02:48:45.787 に答える
0

クリックすると、が特別な値に#showOffered設定#searchFilterされ、結果がフィルタリングされます(表示されていません)。

<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');
  }
})
于 2017-06-26T14:59:02.457 に答える