在聚合物中是否存在类似angularjs指令&transclude属性的内容?什么允许我将一些元素包含在模板中的特定位置?
我想实现以下目标:
<my-header title="My title">
<my-header-item name="Item 1"></my-header-item>
<my-header-item name="Item 2"></my-header-item>
</my-header>
可能表达:
<h1>My title</h1> <!-- "My title" given by my-header's title attribute -->
<ul>
<li>Item 1 <!-- given by my-header-item -->
<li>Item 2
</ul>
我不确定这是否是聚合物的任务,或者这是否是使用聚合物的典型方法。我问,因为我开始喜欢聚合物,我想保持惯用思维。
答案 0 :(得分:5)
在Shadow DOM中,这称为分布。要将轻型DOM节点分配到阴影dom中,可以使用<content>
插入点。
http://www.polymer-project.org/platform/shadow-dom.html#shadow-dom-subtrees
这实际上是一种将节点从轻dom渲染到阴影dom中的占位符的方法。 如果你想使用my-header / my-header-item title / name属性做一些棘手的事情,你可以这样做:
<polymer-element name="my-header">
<template>
<ul>
<template repeat="{{item in items}}">
<li>{{item.name}}</li>
</template>
</ul>
<content id="c" select="my-header-item"></content>
</template>
<script>
Polymer('my-header', {
domReady: function() {
this.items = [].slice.call(this.$.c.getDistributedNodes());
}
});
</script>
</polymer-element>
演示:http://jsbin.com/hupuwoma/1/edit
我有一个更完整的标签演示,可以在https://github.com/ebidel/polymer-experiments/blob/master/polymer-and-angular/together/elements/wc-tabs.html上完成此设置。
答案 1 :(得分:2)
虽然我也是聚合物的新手 - 我想我可以回答这个问题。
您应该能够使用double-mustache语法将属性的值替换为模板,例如。
<h1>{{title}}</h1>
请参阅http://www.polymer-project.org/docs/start/creatingelements.html#publishing
除此之外,您还可以替换标签的内容。例如,如果不使用&#34;名称&#34;你的my-header-item标签中的属性你有类似的东西......
<my-header-item>Item 1</my-header-item>
然后你可以替换&#34;项目1&#34;像这样:
<li><content></content></li>
有关此用法,请参阅http://www.polymer-project.org/platform/shadow-dom.html