考虑到以下HTML、CSS和Vue代码片段,我希望能够使用Vue 2中的计算属性动态构造一系列CSS样式类,并将它们绑定到已经具有面板图标类的span。如CSS代码段所示,类名应该以.图标-工具名的形式出现,其中工具名是从JSON中的toolname属性获取的。当我试图将for循环的结果保存到一个变量并返回该变量时,我只得到一个结果,而不是我所期望的四个结果。总体思路是CSS图标-类应该与通过v-for循环显示的工具名相匹配。
HTML:
<div class="container" id="lab">
<a class="panel-block" v-for="tool in tools">
<span class="panel-icon" :class="style">
<i class="fas fa-book" aria-hidden="true"></i>
</span>
{{ tool.toolName }}
</a>
</div>CSS:
.icon--bulma {
color: hsl(171, 100%, 41%);
}
.icon--jgthms {
color: hsl(204, 86%, 53%);
}
.icon--marksheet {
color: hsl(48, 100%, 67%);
}
.icon--minireset {
color: hsl(348, 100%, 61%);
}Vue.js:
new Vue({
el: '#lab',
data: {
tools: [
{
toolName: 'bulma'
},
{
toolName: 'marksheet'
},
{
toolName: 'minireset'
},
{
toolName: 'jgthms'
}
]
},
computed: {
style: function () {
var toolsList = this.tools;
var toolNameStyle = '';
for (var i = 0; i < toolsList.length; i++) {
toolNameStyle = 'icon--' + toolsList[i].toolName;
console.log('toolNameStyle: ' + toolNameStyle);
return toolNameStyle;
}
}
}
})发布于 2018-05-28 17:46:38
不需要计算属性,只需:
<span :class="'panel-icon icon--' + tool.toolName">
https://stackoverflow.com/questions/50571088
复制相似问题