ゴール
「テーブルの <td/>
要素をクリックすると背景の色が変わる」コンポーネント (ToggleTd.vue
) を実装する
実際の表示には Index.vue
を用いる
初期データ
データ内容や定義はテキトー
実際は コンポーネントが作られる適当なタイミングで外部と通信し初期データを取得する
実装
<template/>
Index.vue
<template> <div> <table ref="table"> <tr> <th>Eng</th> <th>Jp</th> </tr> <tr> <toggle-td v-for="data in tableData" :key="data.time" :data-time="data.time">{{ data.msg }}</toggle-td> </tr> </table> </div> </template>
ToggleTd.vue
<template> <td @click="toggleActive" :class="{ active: isActive }" > <slot></slot> </td> </template>
<script/>
Index.vue
<script> import ToggleTd from '@/components/ToggleTd' export default { name: 'ToggleTd', data () { return { tableData: [ {'time': 10, 'msg': 'Hello'}, {'time': 12, 'msg': 'こんにちは'} ] } }, components: { 'toggle-td': ToggleTd } } </script>
ToggleTd.vue
<script> export default { name: 'ToggleTd', data () { return { isActive: false, store: [] } }, methods: { toggleActive: function () { this.isActive = !this.isActive } } } </script>
<style/>
Index.vue
<style scoped> /* none */ </style>
ToggleTd.vue
<style scoped> .active { background: orange; } </style>