質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

Q&A

解決済

2回答

3973閲覧

v-btnのvalueの使い方

nagi166

総合スコア23

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

0グッド

0クリップ

投稿2020/08/25 06:40

前提・実現したいこと

v-btnでボタンを作って、押されたボタンのvalueをクエリに含めてページ遷移したいのですが上手くいきません。
1つ目のボタンを押すと、「/set/?number=1」に遷移させたいです。

発生している問題・エラーメッセージ

どのボタンを押しても「/set」に遷移してしまいます。

該当のソースコード

vue

1<template> 2 <v-layout wrap> 3 <v-btn @click="select" value=1>1</v-btn> 4 <v-btn @click="select" value=2>2</v-btn> 5 <v-btn @click="select" value=3>3</v-btn> 6 <v-btn @click="select" value=4>4</v-btn> 7 <v-btn @click="select" value=5>5</v-btn> 8 </v-layout> 9</template> 10 11<script> 12export default { 13 methods: { 14 select() { 15 this.$router.push({ path: 'set', query: { number: this.value } }) 16 } 17 } 18}; 19</script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Vuetify.jsのv-btnコンポーネントで、ボタンクリック時にページ遷移を行いたい場合、
ルーティングに

  • vue-routerを使っている場合は、toプロパティ
  • nuxtを使っている場合は、nuxtプロパティ

を使用します。

ここではvue-routerを前提に回答します。

<v-btn :to="{ path: 'set', query: { number: 1 } }">1</v-btn>

v-forと組み合わせた例

<v-btn v-for="i in 5" :key="i" :to="{ path: 'set', query: { number: i } }">{{ i }}</v-btn>

なおv-btnコンポーネントのvalueプロパティは、下記に引用した通り

Button component

コンポーネントがグループ内で選択されたときに使われる値です。もし指定しなかった場合、index が使用されます。

ボタングループで使用されることを想定しています。

投稿2020/08/26 14:37

rubytomato

総合スコア1752

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

this.$router.push({ path: 'set', query: { number: this.value } })

ここでのthisはVueコンポーネントのことを指します。

@clickに引数なしでメソッドを指定する場合は第一引数に自動的にeventが渡りますので
event.target.valueのような感じでeventから辿ってvalueを取ってください

投稿2020/08/25 09:57

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagi166

2020/08/26 08:44 編集

回答ありがとうございます。 event.target.valueで試したところ、「Property 'value' does not exist on type 'EventTarget'」となりました。また、1~5のどのボタンを押しても、「localhost3000/set」に遷移する(失敗の)時と「localhost3000/set/?number=value(valueは押したボタンの値)」に遷移する(成功)のときがあります。
退会済みユーザー

退会済みユーザー

2020/08/27 05:21 編集

検証用コード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <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@5.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"> <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 src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <script> window.addEventListener('DOMContentLoaded', () => { Vue.use(Vuetify); Vue.use(VueRouter); const app = { template: ` <v-app> <v-main> <v-container> <v-layout wrap> <v-btn @click="select" value=1>1</v-btn> <v-btn @click="select" value=2>2</v-btn> <v-btn @click="select" value=3>3</v-btn> <v-btn @click="select" value=4>4</v-btn> <v-btn @click="select" value=5>5</v-btn> </v-layout> </v-container> </v-main> </v-app> `, methods: { select(e) { console.log(e.currentTarget.value); this.$router.push({ path: 'set', query: { number: e.currentTarget.value } }) } } }; const router = new VueRouter({ routes: [{ path: '/set', component: app }], }); new Vue({ vuetify: new Vuetify(), router, }).$mount('#target'); }); </script> </head> <body> <div id="target"> <p> <router-link to="/set">Go to Set</router-link> </p> <router-view></router-view> </div> </body> </html>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問