Javascript 如何修改现有<;内容>;在一个元素中?
我想扩展内容并添加包含数据绑定的新dom元素。在本例中,运行addnew项,但数据绑定不起作用。有可能解决我的问题吗Javascript 如何修改现有<;内容>;在一个元素中?,javascript,polymer,web-component,Javascript,Polymer,Web Component,我想扩展内容并添加包含数据绑定的新dom元素。在本例中,运行addnew项,但数据绑定不起作用。有可能解决我的问题吗 <polymer-element name="wizard"> <template> <style> :host { display: block; } :host #pages section {
<polymer-element name="wizard">
<template>
<style>
:host {
display: block;
}
:host #pages section {
position: static;
}
</style>
<core-animated-pages id="pages"
transitions="slide-from-right"
selected="{{selectedPageIndex}}">
<content id="content"></content>
</core-animated-pages>
</template>
<script>
Polymer({
attached: function() {
var nodes = this.$.content.getDistributedNodes();
for(var i = 0; i < nodes.length; i++) {
if(nodes[i] instanceof HTMLElement) {
var el = nodes[i].querySelector('div div');
el.innerHTML = el.innerHTML + '<button on-tap="{{nextPage}}">Next</button>';
}
}
},
selectedPageIndex: 0,
previousPage: function () {
this.$.pages.selectPrevious(true);
},
nextPage: function () {
this.$.pages.selectNext(true);
}
});
</script>
</polymer-element>
:主持人{
显示:块;
}
:主机#页面部分{
位置:静态;
}
聚合物({
附:函数(){
var nodes=this.$.content.getDistributedNodes();
对于(var i=0;i
我终于找到了您问题的原因
TL;DNR
加
在domReady
处理程序的最开始处的行。这神秘地使技巧和事件处理程序被绑定和处理
我将此视为当前
Polymer
实现中的错误,并将其报告给Polymer团队。问题的原因是polymer.js:10696
版本0.5.4
中的findController
函数。当调度器查找事件处理程序时,它迭代事件目标的父级,直到定义了eventController
属性的父级。不幸的是,仅对lightFromTemplate
函数正确处理此属性。当影子DOM与injectBoundHTML
绑定时,在当前实现中会忘记此分配
现场预览:
NB请注意,web组件的名称中必须包含连字符
my wizard
是一个正确的名称,而wizard
不是。您看到了吗?不过,我不确定它是否能与向light dom节点添加绑定一起工作。不过,您可以复制分布式节点,运行injectBoundHTML,并将它们添加到SD中的容器中。感谢您的快速响应,我将尝试使用它。@ebidel injectBoundHTML正确插入元素。它还可以正确绑定字符串数据。不幸的是,函数绑定的行为异常。当函数执行错误发生时<代码>未捕获类型错误:无法读取未定义的属性“dispatchMethod”@NILL最好在domReady
事件上处理distributedNodes
,而不是在attached
上处理。“我想更改处理程序可能会奏效。”mudasobwa尝试了你的方法。仍然不起作用。感谢您快速详细的回复。
this.eventController = this;