Javascript 在Polymer 2.0中动态附加加载的子元素
我正在尝试升级到Polymer 2.0,但我似乎无法像在1.X中那样在父元素的负载上附加子元素。以前,我想我只是使用了Javascript 在Polymer 2.0中动态附加加载的子元素,javascript,polymer,polymer-2.x,Javascript,Polymer,Polymer 2.x,我正在尝试升级到Polymer 2.0,但我似乎无法像在1.X中那样在父元素的负载上附加子元素。以前,我想我只是使用了ready回调,但似乎所有回调都已更改 如回拨合约已更改部分所示 我试过跑步 document.getElementById("parent-element").appendChild(document.createElement("child-element")); 在ready和attached上,它似乎在创建父元素之前执行该行。这会导致一个异常: TypeError: C
ready
回调,但似乎所有回调都已更改
如回拨合约已更改部分所示
我试过跑步
document.getElementById("parent-element").appendChild(document.createElement("child-element"));
在ready
和attached
上,它似乎在创建父元素之前执行该行。这会导致一个异常:
TypeError: Cannot read property 'appendChild' of null
我也试过使用
this.$.container.appendChild(document.createElement("child-element"));
其中,container
是父元素中一个空
的id
,但我得到了相同的问题。我对聚合物非常陌生,所以如果有更好的方法或结构可以用来获得我需要的东西,请告诉我。来自1.x->2.x:
- 对于标准DOM操作,请删除Polymer.DOM()包装器
- 使用this.shadowRoot代替Polymer.dom(this.root)
由于webcomponents v1规范的原因,ready()
回调现在是异步的(微任务)。要缓解这一问题,请使用settimeout
,它是浏览器级别的另一个任务,在微任务之后运行
如果你想深入研究任务和微任务
ready() {
super.ready();
setTimeout(function() {
var distributedNodes = this.$.slot.assignedNodes({flatten: true});
console.log(distributedNodes);
}.bind(this), 0);
}