聚合物-动态模板渲染
Polymer - dynamic template rendering
是否有可能在运行时动态渲染模板中的聚合物元素或当一些光dom元素可用?我有以下情况:
index.html
<mega-menu>
<span class="menuTriggerText">Open Menu</span>
<ul class="test">
<li>TEST1</li>
<li>TEST2</li>
</ul>
<ul class="test">
<li>TEST1</li>
<li>TEST2</li>
</ul>
</mega-menu>
在我的聚合物元素。html我想做的事情如下:
<template>
<template repeat="{{temp}}"><p>I want to try this</template>
</template>
Polymer('mega-menu, {
created:function(){},
ready: function(){
//getting markup from light-dom
this.temp = document.getElementsByClassName('test');
},
attached:function(){},
detached: function(){},
attributeChanged: function(attrName, oldVal, newVal){}
});
现在,我的问题是-我如何让它工作?我需要在模板上绑定一些东西吗?或者我是否需要某种事件侦听器或观察器?
谢谢,Gbeschbacher
这正是内容插入点的作用。您可以选择在阴影DOM中的特定位置渲染顶级光DOM标记。<content select=""></content>
接受一个CSS选择器,并从light DOM中获取节点。
你的例子是:
<polymer-element name="mega-menu" noscript>
<template>
<content select=".test"></content>
</template>
</polymer-element>
对于这样一个简单的例子,您不需要像这样探查light DOM,但是为了完整起见,我们可以通过一些重要的调整使您的示例工作:
-
document.getElementsByClassName('test')
查找整个文档中的节点。这不是你想要的。你只想要<mega-menu>
的孩子。用this
代替document
(例如this.querySelectorAll('.test')
)。 - 你给
<template repeat="{{temp}}">
一个NodeList。它将无法消除这种情况。它需要一个数组。比如this.temp = [].slice.call(this.querySelectorAll('.test'));
就可以了。
相关文章:
- 聚合物0.5.5:核心列表中的条件模板和/或模板动态参考
- 如何动态创建聚合物元素
- 聚合物 - 将事件绑定到动态创建的元素
- 更改问题'是'在聚合物中动态
- 聚合物动态创建的元素不工作(铁卷轴阈值)
- 动态添加聚合物元素的就绪事件
- 聚合物动态变化数据阵列
- 在聚合物中动态生成 SVG 的样式
- 按动态属性值选择聚合物元素
- 聚合物动态地将子元素附加到 javascript 中的内容元素
- 聚合物核心标签和核心复选框动态
- 访问聚合物动态元素
- 如何在聚合物中设置动态元标记和开放图标记
- InternetExplorer:在HTML中动态设置聚合物纸工具提示的问题
- 聚合物动态生成元素
- 具有动态id值的聚合物自动节点查找
- 当使用动态HTML导入在模板中盖章时,聚合物元素会损坏尺寸
- 动态造型聚合物元素
- 通过计算绑定,在聚合物中使用dom-repeat从Firebase动态获取文件url
- 如何从一组颜色动态地改变聚合物1.0纸按钮的颜色