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

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

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

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

Q&A

解決済

1回答

8358閲覧

Vue.jsでチェックボックスで選択した値を格納するデータにid等も含めて格納したい

poteto4401

総合スコア57

Vue.js

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

0グッド

0クリップ

投稿2018/11/01 04:11

編集2018/11/01 09:50

前提・実現したいこと

以下のようなコードで、チェックボックスを選択した際に、Valueには
[{ id: 1, name: hoge }, { id:3, name: piyo }]
のように値を入れたいのですが、どのように実装すれば実現できますでしょうか?

valueに数値を使用している理由は、Laravel側でバリデーションチェックを行いたいからです。

Vue

1<template> 2 <div> 3 <input type="checkbox" :name="`id[]`" value="1" v-model="Value">hoge 4 <input type="checkbox" :name="`id[]`" value="2" v-model="Value">fuga 5 <input type="checkbox" :name="`id[]`" value="3" v-model="Value">piyo 6 </div> 7</template> 8 9<script> 10 export default { 11 props: [ 12 'old', 13 ], 14 data() { 15 return { 16 Value: this.old || [], 17 } 18 }, 19 } 20</script>

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

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

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

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

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

euledge

2018/11/03 14:16

clickイベントを拾って自前でセットしてはどうでしょうか
poteto4401

2018/11/05 11:28

やはりそうするしかないですかね。。シンプルな方法があるかと期待しましたが、なさそうなのでおとなしくセットすることにします。回答いただきありがとうございます。
guest

回答1

0

ベストアンサー

各チェックボックスがチェックされているかをboolean arrayで表現すれば、v-modelで簡単にバインドできますし、

[{ id: 1, name: hoge }, { id:3, name: piyo }]

もcomputed propertyでこのarrayから計算するようにしておけば便利だと思います。

JSFiddle Demo

html

1<div id="app"> 2 <div class="panel"> 3 <div v-for="(entry, i) in entries"> 4 <input type="checkbox" v-model="selected[i]"> 5 <label>{{entry.name}}</label> 6 </div> 7 </div> 8 9 <div>selectedEntries === {{selectedEntries}}</div> 10</div>

js

1new Vue({ 2 el: "#app", 3 data () { 4 return { 5 entries: [ 6 { id: 101, name: "bla" }, 7 { id: 243, name: "blabla" }, 8 { id: 322, name: "blablabla" }, 9 ], 10 selected: [true, true, true], 11 } 12 }, 13 computed: { 14 selectedEntries () { 15 return this.entries.filter((x, i) => this.selected[i]) 16 }, 17 } 18}) 19

投稿2018/11/08 05:21

karamarimo

総合スコア2551

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問