我正在尝试编写一个小型应用,该应用的样式更改取决于v-for
循环中的键。我不知道如何更改样式。
我想将one
着色为蓝色,two
着色为绿色,three
着色为红色。
<div id="app">
<table>
<template v-for="(v,k) in tableData">
<tr v-bind:class="background-color: {{k}}">
{{v}}
</tr>
</template>
</table>
</div>
代码:
new Vue({
el: '#app',
data: {
tableData:
{
"one": "I am one",
"two": "I am two",
"three": "I am three",
}
}
})
这是我的代码https://jsfiddle.net/pevLgf0b/
似乎我应该使用计算属性,但是我不明白如何正确使用它。
答案 0 :(得分:2)
演示:https://jsfiddle.net/jacobgoh101/y295qd04/
您可以使用方法来动态获得不同的颜色
<script src="https://unpkg.com/vue"></script>
<div id="app">
<table>
<template v-for="(v,k) in tableData">
<tr v-bind:style="style(k)">
<td>
{{v}}
</td>
</tr>
</template>
</table>
</div>
new Vue({
el: '#app',
data: {
tableData: {
"one": "I am one",
"two": "I am two",
"three": "I am three",
}
},
methods: {
style(k) {
switch (k) {
case 'one':
return {
backgroundColor: 'red'
}
case 'two':
return {
backgroundColor: 'green'
}
case 'three':
return {
backgroundColor: 'blue'
}
}
}
}
})
答案 1 :(得分:0)
您可以为颜色添加一个数据对象。 https://jsfiddle.net/pevLgf0b/
new Vue({
el: '#app',
data: {
tableData:
{
"one": "I am one",
"two": "I am two",
"three": "I am three",
},
colorData:{
"one" : "blue",
"two" : "green",
"three" : "red",
}
}
})
<script src="https://unpkg.com/vue"></script>
<div id="app">
<table>
<template v-for="(v,k) in tableData">
<tr v-bind:style="{ 'background-color': colorData[k] }">
<td>{{v}} </td>
</tr>
</template>
</table>
</div>
答案 2 :(得分:0)
就我而言,这很完美,
我已经根据键绑定了类。我创建了一个函数,该函数将根据值和应用的样式返回适当的类。
尝试一下:
<template>
<table>
<template v-for="(v,k) in tableData">
<tr v-bind:class="applyStyle(k)">
<td>{{v}}</td>
</tr>
</template>
</table>
</template>
<script>
export default {
data() {
return {
tableData: {
one: "I am one",
two: "I am two",
three: "I am three"
}
}
},
methods: {
applyStyle(value) {
if (value == "one") {
return "applyRed";
}
if (value == "two") {
return "applyGreen";
}
if (value == "three") {
return "applyBlue";
}
}
}
};
</script>
<style>
.applyRed {
background-color: red;
}
.applyGreen {
background-color: green;
}
.applyBlue {
background-color: blue;
}
</style>