我在聚合物组件中有一个元素,并且想要有条件地添加一个css类。
<div class="bottom {{completed: item.completed}}">
如果item.isCompleted为true,则添加.completed类。
但是,我遇到以下错误:
表达式语法无效:已完成?:item.completed
我不想将孔子树放在模板条件中。是否可以在html标签内使用表达式?我正在使用最后一个聚合物版本,这种功能是否以任何方式迁移或替换?
答案 0 :(得分:18)
令牌列表技术在Polymer 0.5中有效,但已被弃用。
从Polymer 1.2开始,以下工作:
<dom-module ...>
<template>
<div class$="bottom [[conditionalClass(item.completed)]]"></div>
</template>
<script>
Polymer({
...
conditionalClass: function(completed) {
return completed ? 'completed' : '';
}
});
<script>
</dom-module>
答案 1 :(得分:13)
更新Polymer 1.0
<div class$="[[getClasses(item.completed)]]">
getClasses: function (completed) {
var classes = 'bottom'
if(completed) classes += ' completed';
return classes;
}
即使可以从completed
内this.item.completed
读取getClasses()
,也必须将其作为参数从绑定中传递出来。这样,每次getClasses(item.completed)
更改时,Polymer都会重新评估函数item.completed
。
原始 - 聚合物0.5
应该看起来像
<div class="bottom {{ {completed: item.completed } | tokenList }}">
有关详细信息,请参阅文档:http://polymer-project.org/docs/polymer/expressions.html#tokenlist
答案 2 :(得分:2)
最简单的方法:
<template>
<style is="custom-style">
.item-completed-true { background: red; }
</style>
<div class$="bottom item-completed-[[item.completed]]"></div>
</template>