Meteor:将Template外部的事件与模板

时间:2015-12-19 15:35:07

标签: javascript events meteor

我正在尝试从模板MyTemplate捕捉窗口内的任何点击事件,如下所示:

Template.MyTemplate.events({
  'click' : function(e) {
    console.log("click");
    // Here I need to access Template.instance()
    // ...
  }
});

但是上面的代码并不像我想的那样有效,但只捕获模板DOM中的点击,我无法获得模板外的点击。

另外,我想在模板中包含代码,因此Template.body.events({ ... })之类的内容不是一个选项。

我做了什么

我已经尝试this solution

function clickEvent(event) {
  console.log('click');
  // Here I can access the right `Template.instance()` as `this`
  // thanks to the bind below
  // ...
}

Template.MyTemplate.onCreated(function () {
  // The `bind` give me the template instance inside the `clickEvent`
  // function
  $(document).on('click', clickEvent.bind(this));
});

Template.MyTemplate.onDestroyed(function () {
  $(document).off('click', clickEvent);
});

它有效,但似乎是一种解决方法:我有Template.MyTemplate.events({ ... })内的所有事件,而这些事件在外面,我需要做一个绑定来获取模板的实例,它使用JQuery绑定事件而不是Meteor本身。

那么,有没有更简单的方法/流星方式呢?像一些代码可以进入Template.MyTemplate.events({ ... })

0 个答案:

没有答案