β

angular中事件监听后this传导问题

XX到此一游 137 阅读

原本的写法:

window.addEventListener("deviceorientation", this.watch);
window.removeEventListener("deviceorientation", this.watch);

这样在this.watch中无法调用正确的this对象

通过this.watch.bind(this);传递了this后,removeEventListener又失效了。

后查得,可以使用Renderer2提供的listen方法:

import { Renderer2 } from '@angular/core';

  constructor(
    private renderer: Renderer2,
  ) {}

  start() {
    this.listenFunc = this.renderer.listen("window", "deviceorientation", (e) => {
      console.log(e.alpha, e.beta, e.gamma);
    });
  }

  stop() {
    this.listenFunc();
  }

调用返回函数listenFunc,即可取消监听。

作者:XX到此一游
助人为快乐之本 有恒为成功之本
原文地址:angular中事件监听后this传导问题, 感谢原作者分享。

发表评论