AddEventListener - 使用外部函数

时间:2017-05-16 19:33:32

标签: angular ionic2

我有一些像这样的代码:

  addMarkerListener(){
    document.querySelector('body').addEventListener('click', (event) => (this.handleMarkerListenerClick(event)));
  }

  handleMarkerListenerClick(event){
    let target = event.target as HTMLElement;
    if (target.tagName.toLowerCase() == "a" && target.className.startsWith("ver-mais-unidade")){
      this.onViewUnidade();
    }
  }

它工作得很好,但我需要稍后删除该侦听器,所以我必须像这样调用我的处理程序:

  addMarkerListener(){
    document.querySelector('body').addEventListener('click', this.handleMarkerListenerClick);
  }

  handleMarkerListenerClick(event){
    let target = event.target as HTMLElement;
    if (target.tagName.toLowerCase() == "a" && target.className.startsWith("ver-mais-unidade")){
      this.onViewUnidade();
    }
  }

问题是,使用第二个代码,我得到“this.onViewUnidade”是未定义的。 onViewUnidade是我的组件中的一个函数,在第一种情况下运行良好。谁知道我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用instance function

server = TCPServer.open("some.ip.v4.address", 8080)

loop do

  Thread.start(server.accept) do |socket|

    #Do something...

  end
end

或在构造函数中:

handleMarkerListenerClick = (event) => {

但最好使用像

这样的角度方式
this.handleMarkerListenerClick = this.handleMarkerListenerClick.bind(this);

@HostListener('document:click', ['$event'])
handleMarkerListenerClick(e) { ... }