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

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

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

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

Q&A

1回答

6780閲覧

VueJSのv-for内でチェックボックスとセレクトボックスを使う

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

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

0グッド

1クリップ

投稿2018/04/21 18:01

以下のようなことがしたいです。

複数のユーザがおり、

  1. 一行ずつユーザを表示していきます。
  2. 1ユーザにつきチェックボックスがついており、チェックするとセレクトボックスが現れます
  3. セレクトボックスも1ユーザごとに選択でき、年齢をセレクトできるようになっています(年齢初期値は10)
  4. 最終的にチェックがついたユーザ、その選択された年齢を配列にして取得したい
<div v-for="user in users"> {{ user.name }} <input type="checkbox" v-bind:value="user.id" v-model="status[user.id]"> <select v-if="status[user.id]" v-model="age[user.id]" > <option v-for="age in ages"> {{ age }} </option> </select> </div> <script> data: function() { return { status: [], age: [], } } </script>

最終的に取得したい配列としては以下です。

{ [ user_id: 1 age: 20 ], [ user_id: 3 age: 30 ] }

セレクトボックス、チェックボックスである必要はありません。現在思いつく手法がそれしかないのです。

どうぞご回答のほどよろしくお願いいたします。

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

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

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

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

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

euledge

2018/04/23 10:10

質問の中に書いてあることを行って、できなかった事はどのようなことでしょうか?
guest

回答1

0

状況がわからないので的外れな回答かもしれませんが、以下のような感じかと思います。
何らかの手がかりになれば良いですが...

html

1<body> 2 <div id="app"> 3 <div v-for="user in users"> 4 5 {{ user.name }} 6 7 <input type="checkbox" v-model="user.status"> 8 9 <select v-if="user.status" v-model="user.age"> 10 <option v-for="age in ages" :value="age"> 11 {{ age }} 12 </option> 13 </select> 14 </div> 15 16 <button @click="showResults">確定</button> 17 </div> 18 19 <script src="//unpkg.com/vue@2.5.16/dist/vue.js"></script> 20 <script> 21 // 複数のユーザ(本来は外部から取得される?) 22 var users = [ 23 { id: 1, name: 'ユーザー1' }, 24 { id: 2, name: 'ユーザー2' }, 25 { id: 3, name: 'ユーザー3' }, 26 ] 27 28 new Vue({ 29 el: '#app', 30 data: { 31 users: users.map(function (user) { 32 user.age = 10 // 年齢初期値は10 33 return user 34 }), 35 ages: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,] 36 }, 37 methods: { 38 // 最終的にチェックがついたユーザ、その選択された年齢を配列にして取得 39 showResults() { 40 let results = [] 41 this.users.forEach(function (user) { 42 if (user.status) { 43 results.push({ 44 user_id: user.id, 45 age: user.age 46 }) 47 } 48 }) 49 console.log(results) 50 } 51 } 52 }) 53 </script> 54</body>

投稿2018/04/24 01:02

Lulucom

総合スコア1899

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問