プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

Vuetify.js のデータテーブルでボタンがある行を選択する

この記事は 2021 年 07 月 24 日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. Vuetify.js のデータテーブルでボタンがある行を選択する
  3. おわりに

1. はじめに

こんにちは、iOS のエディタアプリPWEditorの開発者の二俣です。 今回は業務で使用しているVuetify.jsデータテーブルでボタンがある行を選択する方法についてです。

目次へ

2. Vuetify.js のデータテーブルでボタンがある行を選択する

Vuetify.jsデータテーブルでボタンのある行を選択するには、以下の様な実装にします。
click:rowにより行選択でイベントが発生しますが、ボタンを押下した時にボタン押下イベントともに行選択イベントも発生します。
そのためイベント修飾子.stopによりイベントの伝搬を防ぎ、ボタン押下イベントの後に行選択イベントの発生を抑制します。

実装例

<!DOCTYPE html>
<html>
  <head>
    <link
      href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"
      rel="stylesheet"
    />
    <link
      href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css"
      rel="stylesheet"
    />
    <link
      href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css"
      rel="stylesheet"
    />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"
    />
  </head>
  <body>
    <div id="app">
      <v-container>
        <v-row>
          <v-col cols="4">
            <v-data-table
              :headers="headers"
              :items="items"
              hide-default-footer
              @click:row="onClickRow"
            >
            <!-- "操作"列にボタンを配置します。 -->
            <template #item.action="{ item }">
              <v-btn @click.stop="onClickShow(item)">表示</v-btn>
            </template>
            </v-data-table>
          </v-col>
        </v-row>
      </v-container>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
    <script>
      new Vue({
        el: "#app",
        vuetify: new Vuetify(),
        data: () => ({
          headers: [
            { text: "名前", value: "name" },
            { text: "価格", value: "price" },
            { text: "操作", value: "action" },
          ],
          items: [
            { name: "リンゴ", price: 110 },
            { name: "バナナ", price: 230 },
            { name: "オレンジ", price: 350 },
          ],
        }),

        methods: {
          // 表示ボタンが押下された時に呼び出されます。
          onClickShow(item) {
            console.log(`${item.name}:${item.price}`);
          },

          // 行が選択された時に呼び出されます。
          onClickRow(row) {
            console.log(`${row.name}:${row.price}`);
          }
        },
      });
    </script>
  </body>
</html>

実行結果

f:id:paveway:20210723084304p:plain

リファレンス

Vuetify.js

データテーブル

click:row

イベント修飾子

参考サイト

VuetifyのDataTableで行クリックとボタンクリックを実装する方法

目次へ

3. おわりに

前回

www.paveway.info

はボタンを押下した時のイベントだけでしたが、行選択のイベントを併用する場合問題があることがわかりました。
そのためそれを回避する方法を調査しました。

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッド OS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOS モバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ