文档事件侦听器在Tracker.autorun()中或解锁模板时没有解除绑定

时间:2016-02-21 22:06:35

标签: meteor meteor-tracker

通过点击页面上的任何其他位置解除菜单后,我注意到控制台从document.body将会记住的回调中记录的时间是'我移动到另一个模板并触发相同的行为后,以前的事件侦听器。回调是dismissMenu,如下所示。例如......

第一次:

  

您好

第二次:

  

您好   喂

等......

我在这里做错了什么?

谢谢!

// named callback to dismiss menu so I can unbind later using $.off()
const dismissMenu = function() {
  console.log('hello')
  $('.js-dd').addClass('js-hidden')
  Session.set('menuOpen', false)
  $(document.body).off('click', dismissMenu)
}

Template.app_bar_expanded.onCreated(function() {
  this.stackId = FlowRouter.getParam('_id')

  // opening the menu will trigger the Session var to 'true'
  Tracker.autorun(function() {
    const menuIsOpen = Session.get('menuOpen')
    if( menuIsOpen ) {
      $(document.body).on('click', dismissMenu)
    }
  })
})

// Stem the event bleeding some...
// TODO get this .off() to actually work as you would expect.
Template.app_bar_expanded.onDestroyed(function(){
  $(document.body).off('click', dismissMenu)
})

0 个答案:

没有答案