如何修改元素中已有的<content>?
How to modify existing <content> in a element?
我想扩展内容并添加包含数据绑定的新 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>
终于找到问题的原因了。
TL;DNR
添加
this.eventController = this;
行在您的 domReady
处理程序的开头。 神秘地 成功了,事件处理程序被绑定和处理。
我将此视为当前 Polymer
实施中的错误,并将其报告给 Polymer 团队。问题的原因是 0.5.4
版本 polymer.js:10696
中的 findController
函数。当调度程序查找事件处理程序时,它会迭代事件目标的父级,直到定义了 eventController
属性。不幸的是,此属性仅针对 lightFromTemplate
函数 得到了正确处理。当 shadow DOM 与 injectBoundHTML
绑定时,此赋值在当前实现中被遗忘。
实时预览:http://plnkr.co/edit/67WwbKmqsJRmsdXCbgbb?p=preview
NB 请注意,网络组件 必须 以连字符命名。 my-wizard
是专有名称,而 wizard
不是。
我想扩展内容并添加包含数据绑定的新 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>
终于找到问题的原因了。
TL;DNR
添加
this.eventController = this;
行在您的 domReady
处理程序的开头。 神秘地 成功了,事件处理程序被绑定和处理。
我将此视为当前 Polymer
实施中的错误,并将其报告给 Polymer 团队。问题的原因是 0.5.4
版本 polymer.js:10696
中的 findController
函数。当调度程序查找事件处理程序时,它会迭代事件目标的父级,直到定义了 eventController
属性。不幸的是,此属性仅针对 lightFromTemplate
函数 得到了正确处理。当 shadow DOM 与 injectBoundHTML
绑定时,此赋值在当前实现中被遗忘。
实时预览:http://plnkr.co/edit/67WwbKmqsJRmsdXCbgbb?p=preview
NB 请注意,网络组件 必须 以连字符命名。 my-wizard
是专有名称,而 wizard
不是。