问题描述
在polymer 1元素中,当冲压阴影dom并调用了阴影dom儿童的ready时,将调用ready。这意味着元素在递归准备就绪时就已经准备就绪。
在《聚合物3》中,“准备好”并没有说明影子dom孩子的准备情况。就元素可能来自具有不同生命周期约定的各种框架而言,这是有意义的。另一方面,在看似相同的方法上,行为发生了巨大变化,很容易就骗了你。
解决方法
某些模式:
- 不要依靠孩子准备和他们说话,而是使用绑定
// before ready(){ this.$.child1.setState(x) } // after <template> <my-child id="child1" state="[[stateForChild]]"> ...
- 等待与孩子交谈之前定义孩子
ready(){ customElements.whenDefined('my-child').then(()=>{ this.$.child1.setState(x) }) }
- 针对孩子的事件采取行动
// child this.dispatchEvent(new CustomEvent('i-am-ready')) // parent ready(){ this.$.child1.addEventListener('i-am-ready',...) }