前提・実現したいこと
bootstrapのデザインでラジオボタンを作り、vue.jsで値を取得したいです
https://cccabinet.jpn.org/bootstrap4/components/buttons#checkbox-and-radio-buttons
こちらのページを参考にラジオボタンを作成しました
そしてv-model
で値を取得しようと下記のコードを作成したのですが
値取得がうまくいかず、いろいろ試してみて data-toggle="buttons"
を外してみたら値の取得ができるようになりました
ボタンの表示、切り替えもきちんと動作しています
しかし、本来必要であるはずの属性を外したにも関わらずなぜきちんと動作するのか仕組みがわかりません
また、これで正しいのか判断できず困っているので詳しい方からご教授いただきたいです
###該当のソースコード
CDN
html
1 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> 2 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 3 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> 4 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> 5 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
data-toggle="buttons"がついているとボタンを切り替えても初期値しか得られない
html
1 <div class="container" id="app"> 2 3 <div class="btn-group btn-group-toggle" data-toggle="buttons"> 4 <label class="btn btn-secondary btn-sm" :class="{'active': index === picked}" v-for="(color, index) in colors"> 5 <input type="radio" name="colors" :value="index" autocomplete="off" v-model="picked"> {{color}} 6 </label> 7 </div> 8 9 <button @click="show">click</button> 10 </div>
javascript
1var app = new Vue({ 2 el: '#app', 3 data: { 4 colors: [ 5 "赤", 6 "青", 7 "黄", 8 "緑", 9 "紫", 10 ], 11 picked: 3, 12 }, 13 methods: { 14 show: function(){ 15 console.log(this.picked); 16 } 17 } 18});
試したこと
・該当のソースコードでテストした場合
radioボタンをクリックすると見た目上は切り替わるが
showメソッドからは初期値の3しか表示されない
・該当のソースコードからdata-toggle="buttons"
を外した場合
radioボタンをクリックすると見た目が切り替わり
showメソッドからも入力通りの値が表示される
・該当のソースコードからdata-toggle="buttons"
とv-model
を外した場合
radioボタンをクリックすると見た目が切り替わらない
以上のことからv-model
がdata-toggle
の役割を果たしているのではないかと思い
vue.jsとbootstrap.jsを読んでいるのですがなかなか理解できず質問することにしました
そもそもなぜdata-toggle="buttons"
とv-model
が共存できないのかがわからないです
テスト環境
windows10
chromeブラウザ
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/04 13:07