Javascript 如何修改现有<;内容>;在一个元素中?

Javascript 如何修改现有<;内容>;在一个元素中?,javascript,polymer,web-component,Javascript,Polymer,Web Component,我想扩展内容并添加包含数据绑定的新dom元素。在本例中,运行addnew项,但数据绑定不起作用。有可能解决我的问题吗 <polymer-element name="wizard"> <template> <style> :host { display: block; } :host #pages section {

我想扩展内容并添加包含数据绑定的新dom元素。在本例中,运行addnew项,但数据绑定不起作用。有可能解决我的问题吗

<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;