Polymer 聚合物:如何根据属性替换标签名?
我有这样的模板Polymer 聚合物:如何根据属性替换标签名?,polymer,Polymer,我有这样的模板 <template> <button class="y-button" id="el" disabled?="{{disabled !== undefined}}"> <span class="y-button__text"><content></content></span> </button> </template> 如何将标记名更改为另一个(
<template>
<button class="y-button" id="el" disabled?="{{disabled !== undefined}}">
<span class="y-button__text"><content></content></span>
</button>
</template>
如何将标记名更改为另一个(例如
)取决于某些属性,例如。
我试过了
<template>
<{{tagName}}></{{tagName}}>
</template>
但它不起作用。数据绑定无法做到这一点。绑定表达式仅允许在标记的文本内容或属性值中使用: 您也不能使用数据绑定插入整个标记,因为数据绑定表达式的内容在插入之前是HTML转义的。见: 不能使用表达式插入HTML。为避免XSS问题,表达式的输出在作为绑定值插入之前会进行HTML转义 如果只有两个可能的标记,则可以使用条件模板语法:
<template if="{{condition}}">
<tagOne></tagOne>
</template>
<template if="{{! condition}}">
<tagTwo></tagTwo>
</template>
对于更复杂的情况,您可能希望按照@skmvasu的建议使用JavaScript和innerHTML。如果需要在插入的HTML中激活数据绑定,可以使用injectBoundHTML方法:
您可以使用
injectBoundHTML
:
var tag = 'x-el';
var html = '<' + tag + ' item="{{item}}"></' + tag + '>';
this.injectBoundHTML(html, this.$.container);
var标签='x-el';
var html='';
this.injectBoundHTML(html,this.$.container);
{{item.name}
聚合物({
就绪:函数(){
this.item={name:'John Smith'};
变量标签='x-el';
var html='';
this.injectBoundHTML(html,this.$.container);
}
});
我不太明白你的问题。您是否正在尝试基于模型动态创建元素?如果是这样,您可以简单地使用元素的javascript来处理它。让我知道更多的细节,这样我可以更好地帮助你们。我在模板中有一个大的声明标记:按钮几个处理程序,带有数据绑定的类。现在,我需要通过保存处理程序和类来动态更改标记名,使其依赖于属性url。