首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >激发全局事件聚合物2

激发全局事件聚合物2
EN

Stack Overflow用户
提问于 2018-06-20 18:14:17
回答 1查看 138关注 0票数 1

我正在尝试为我的界面创建一个错误处理对话框。该对话框将简单地显示来自iron ajax的错误消息。我能够访问此消息,并希望在ajax返回错误时触发一个事件。下面是触发事件的代码:

代码语言:javascript
复制
  testError(e) {
    const err = e.detail.request.xhr.response.message;
    this.dispatchEvent(new Event('error'));
  }

下面是添加事件监听器的代码:

代码语言:javascript
复制
  class ErrorHandling extends Polymer.Element {
    static get is() { return 'error-handling'; }
    static get properties() {
      return {
      }
    }
    constructor() {
      super();
      this._boundListener = this.error.bind(this);
    }
    connectedCallback() {
      super.connectedCallback();
      window.addEventListener('error', this._boundListener);
      console.log("connectedCallback ran");
    }
    disconnectedCallback() {
      super.disconnectedCallback();
      window.removeEventListener('error', this._boundListener);
      console.log("disconnectedCallback ran");
    }
    _boundListener(e) {
      console.log("boundlistener ran");
    }

我已经通读了文档,试图找出为什么这不起作用,但没有成功。有没有什么原因导致这个不起作用?

EN

回答 1

Stack Overflow用户

发布于 2018-06-20 20:09:51

您需要使用Custom Events。有了这一点,您可以添加选项冒泡: true,这将使事件冒泡,直到它到达窗口。

代码语言:javascript
复制
this.dispatchEvent(new CustomEvent('error', {bubbles: true}));

要接收此事件,您必须register一个事件侦听器:

代码语言:javascript
复制
window.addEventListener('error', this.myEventListener)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50945744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档