値をバインドします。
js
1<img :src="image">
2
3data () {
4 return {
5 image: "neko.jpg"
6 }
7}
image の値を書き換えれば <img src="..."> も書き換わります。
js
1methods: {
2 click () {
3 this.image = "inu.jpg"
4 }
5}
color も同じように
<v-btn height="50px" width="50px" :color="color">
data () {
return {
color: "red"
}
},
methods: {
click () {
this.color = "blue"
}
}
テキストは
<button>{{text}}</button>
data () {
return {
text: "B"
}
},
methods: {
click () {
this.text = "C"
}
}
まとめると
js
1<template>
2 <v-btn :color="a.color" @click="click">{{a.text}}</v-btn>
3 <img :src="a.image">
4
5 <v-btn :color="b.color">{{b.text}}</v-btn>
6 <img :src="b.image">
7</template>
8
9<script>
10export default {
11 data () {
12 return {
13 a: {
14 text: "A",
15 color: "red",
16 image: "apple.jpg"
17 },
18 b: {
19 text: "B",
20 color: "red",
21 image: "banana.jpg"
22 },
23 }
24 },
25 methods: {
26 click () {
27 this.a.color = "blue"
28 this.a.image = "banana.jpg"
29 this.b.text = "C"
30 this.b.image = "melon.jpg"
31 }
32 }
33}
34</script>
v-bind
サンプル
追記(コメントへの回答です)
方法1
押されたボタンとテキストの状態によってclickの振る舞いを変える
方法2
ボタンをA, B, C, D と用意しておき、クリックされたボタンによって表示を切り替える
方法1 はコードがカオスになりがち、方法2 はボタンの順番を制御(たとえば C B という並びに)できません。
順番を制御するには、それぞれのボタンをコンポネントに切り出し動的なコンポネントで切り替えます。(もっといい方法があるかも)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/22 01:59
2021/01/22 08:40