Polymer 从该元素外部收听聚合物连接事件

Polymer 从该元素外部收听聚合物连接事件,polymer,Polymer,在我的团队中,我们正试图为聚合物自定义元素编写一些单元测试。我们的大多数自定义元素都使用Polymer的模板绑定功能,因此我们有很多代码是在自定义元素的附加回调下编写的。 当为这些元素编写单元测试时,我只能听polymer ready事件,但我们需要的是仅在polymer附加事件之后运行测试套件,以便绑定已经完成 现在,我们已经对要检查的元素进行了脏检查,这样我们的测试套件只能在整个模板绑定之后运行 我已经看到了一个例子,其中Polymer公开了一种监听ready事件的方法,但我们需要的是一种从

在我的团队中,我们正试图为聚合物自定义元素编写一些单元测试。我们的大多数自定义元素都使用Polymer的模板绑定功能,因此我们有很多代码是在自定义元素的附加回调下编写的。 当为这些元素编写单元测试时,我只能听polymer ready事件,但我们需要的是仅在polymer附加事件之后运行测试套件,以便绑定已经完成

现在,我们已经对要检查的元素进行了脏检查,这样我们的测试套件只能在整个模板绑定之后运行


我已经看到了一个例子,其中Polymer公开了一种监听ready事件的方法,但我们需要的是一种从Polymer外部监听Polymer附加事件的方法。我认为有几种方法可以解决这个问题

  • 从测试线束中的或monkey patch
    domReady
    触发您自己的自定义事件,以便它调用元素已定义的任何回调,并发送自定义事件
  • 创建一个监视父元素并可以检测何时将新的子元素插入DOM的。我已经做好了准备。注意:如果您的元素已经在DOM中,则突变观察者将不起作用。您需要首先设置突变观察者,然后将元素添加到页面中

  • 无论您从何处收听:

    window.addEventListener('custom-element-attached', function() {
      console.log('Custom element attached event has fired');
    }.bind(this));
    
    您试图收听的元素:

    attached: function() {
      var event = new Event('custom-element-attached');
      window.dispatchEvent(event);
    }
    

    我没有测试过这段代码,但它应该可以工作。

    domReady回调是一个真正的救命稻草:)