【BootstrapVue】tableでクリックされたレコードの値を取得する


はじめに

Vue.js + Bootstrapのtableのレコードの値を取得する方法のメモです。
初めての投稿となるので、日本語がおかしいかもですが、誰かの役に立てれば幸いです。

やりたいこと

以下の画像はBootstrapVueのTables Componentを利用して作成したテーブルです。
今回は、テーブルの中の佐藤 健さんのレコードをクリックした時に、レコードの値を取得します。

以下がコードです。ちょっとだけ解説します。

<b-table>はBootstrapのテーブル形式でデータを表示するためのコンポーネントです。
:itemsにソースデータの配列を渡してあげると、よしなにしてくれます。(めっちゃ楽)

<template>
  <div>
    <b-table striped hover :items="items"></b-table>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        items: [
          { age: 20, first_name: '太郎', last_name: '田中' },
          { age: 31, first_name: '健', last_name: '佐藤' },
          { age: 45, first_name: '花子', last_name: '山田' },
          { age: 60, first_name: '謙', last_name: '渡辺' }
        ]
      }
    }
  }
</script>

実装

row-clicked イベントリスナーでレコードの値を受け取れるみたいです。また、itemsに対する配列のインデックスを、任意の2つ目の引数として受け取れるらしい。

<template>
  <div>
    <b-table striped hover :items="items" @row-clicked="row"></b-table> // 変更
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { age: 20, first_name: "太郎", last_name: "田中" },
        { age: 31, first_name: "健", last_name: "佐藤" },
        { age: 45, first_name: "花子", last_name: "山田" },
        { age: 60, first_name: "謙", last_name: "渡辺" }
      ]
    };
  },
  methods: {           //追記
    row(record) {
      console.log(record);
    }
  }
};
</script>

結果

以下は佐藤 健さんのレコードをクリックした時の結果です。

Object {age: 31, first_name: "健", last_name: "佐藤"}

レコードの値を受け取ることができました。

参考