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

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

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

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

Q&A

解決済

2回答

754閲覧

Vue.jsドロップダウンのリストをラジオボタンに変更したい

shimon11

総合スコア49

Vue.js

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

ラジオボタン

ラジオボタンはフォームに使われる要素のひとつであり、ユーザに限られた選択肢からひとつの答えを選んでもらうというものです。

0グッド

0クリップ

投稿2020/06/18 00:13

編集2020/06/20 10:59

SelectInput.vue

<template> <div class="select__wrapper"> <select class="select__select" :value="value"> <option value="" disabled selected> 選択してください </option> <option v-for="item in items" :key="item.caption" :value="item.value"> {{ item.caption }} </option> </select> </div> </template> <script> export default { props: { items: { type: Array, required: true, default: () => [] }, value: { type: String, required: true, default: () => '' } }, methods: { isItemActive(item) { return item === this.value } } } </script>

このコードをラジオボタンに変えたいです
その際には、こう言った形で配列にしてデータを渡したい

item: '', items: [ { caption: 'hogehoge', value: 'hogevalue' }, { caption: 'fugafuga', value: 'fugavalue' } ],

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

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

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

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

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

guest

回答2

0

ベストアンサー

同じような質問が2個あるのでこちらで

vue

1<template> 2 <div id="app"> 3 <radio 4 :items="items" 5 :value="item" 6 @input="input" 7 > 8 </radio> 9 </div> 10</template> 11 12<style scoped> 13</style> 14 15<script> 16import Radio from './components/Radio.vue'; 17 18export default { 19 components: { 20 Radio, 21 }, 22 data: function() { 23 return({ 24 item: '', 25 items: [ 26 { caption: 'あいう', value: 'aiu' }, 27 { caption: 'かきく', value: 'kakiku' }, 28 ] 29 }); 30 }, 31 methods: { 32 input: function(val) { 33 console.log(val.caption + " : " + val.value); 34 } 35 } 36} 37</script>

Radio.vue

vue

1<template> 2 <div> 3 <div 4 v-for="(data, idx) in items" 5 :key="idx" 6 > 7 <input 8 type="radio" 9 :id="idx" 10 :value="data.value" 11 v-model="item" 12 :class="{ active: isItemActive(data) }" 13 @click="onItemClicked(data)" 14 > 15 <label :for="idx">{{ data.caption }} {{ data.value }}</label> 16 <br> 17 </div> 18 </div> 19</template> 20 21<style lang="scss" scoped> 22</style> 23 24<script> 25export default { 26 props: { 27 items: { 28 type: Array, 29 required: true, 30 default: () => [] 31 }, 32 value: { 33 type: String, 34 required: true, 35 default: () => '' 36 } 37 }, 38 data: function() { 39 return({item: this.value}); 40 }, 41 methods: { 42 isItemActive(item) { 43 return this.value === item 44 }, 45 onItemClicked(item) { 46 this.$emit('input', item) 47 } 48 } 49} 50</script>

こんな感じじゃないかな。

※isItemActiveに関しては用途がわからなかったのでとりあえずおいておいた感じ

投稿2020/06/18 02:39

rururu3

総合スコア5545

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

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

0

とりあえずこれで並ぶんじゃない?イベントは流れでオナシャス

html

1 <div class="select__wrapper"> 2 <label v-for="item in items" :key="item.caption" style="display:block;"> 3 <input type="radio" :value="item.value" v-model="value">{{ item.caption }} 4 </label> 5 {{value}} 6 </div>

投稿2020/06/18 02:12

sousuke

総合スコア3828

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問