事件发出错误

时间:2018-08-13 09:04:04

标签: stenciljs

所以我有这个代码-

@Component({
  tag: "app-home",
  styleUrl: "app-home.css"
})
export class AppHome {
  @Event()
  myEvent: EventEmitter;

  callEv() {
    this.myEvent.emit("hello");
  }

  render() {
    return (
      <div class="app-home">
        <button onClick={this.callEv}>Hello</button>
      </div>
    );
  }
}

单击按钮后,我在控制台中收到此错误-

Uncaught TypeError: Cannot read property 'emit' of undefined
    at HTMLButtonElement.callEv

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

callEv方法内,您使用this关键字来调用事件发射器服务。但是在模板内部,上下文是不同的,因此this不包含事件发射器服务,这会导致您出错。

您需要做的是将当前上下文绑定到该方法。将此添加到您的班级:

constructor() {
    this.callEv = this.callEv.bind(this);
}