我想扩展内容并添加包含数据绑定的新dom元素。在示例中运行添加新项,但数据绑定不起作用。有可能解决我的问题吗?
<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>
答案 0 :(得分:2)
我终于找到了问题的原因。
TL; DNR
添加
this.eventController = this;
在domReady
处理程序的最开头。那个 mystically 会使技巧和事件处理程序受到约束和处理。
我将此视为当前Polymer
实施中的错误,并将其报告给Polymer团队。问题的原因是findController
中的polymer.js:10696
功能与版本0.5.4
相同。当调度程序查找事件处理程序时,它会迭代事件目标的父项,直到定义了eventController
属性的父项。不幸的是,正在为lightFromTemplate
函数 正确处理此属性。当shadow DOM与injectBoundHTML
绑定时,在当前实现中忘记了这个赋值。
实时预览:http://plnkr.co/edit/67WwbKmqsJRmsdXCbgbb?p=preview
NB 请注意,网络组件必须以内部连字符命名。 my-wizard
是一个正确的名称,而wizard
则不是。