前提・実現したいこと
今のプロジェクトでvue.jsを使ってリストの1~5までを表示する画面の修正をしています。
ここで画面(main.html)にトグルを実装したいと思っています。
また、条件としては、修正範囲がmain.htmlのみとなっており、
main.jsに関しては既にロジックは実装済みであるため、修正しない方針で現状はやっております。
そこでhtml側の処理だけで修正できないか検討してるのですが、
まだ方法が見つけられていない状況です。
質問
<ui v-for="n in 5" v-bind:value="n"> リスト{{n}}
を用いて、トグルを実装する方法をご教授いただけないでしょうか?
画面のイメージとしては、
リスト1 トグルスイッチON リスト2 トグルスイッチOFF リスト3 トグルスイッチOFF リスト4 トグルスイッチON リスト5 トグルスイッチON
のようなリストに対してトグルのON/OFFを設定できる画面をつくっています。
ここで
<ui v-for="n in 5" v-bind:value="n"> リスト{{n}}
の実装した後にトグルの処理を入れればfor分の処理のように実装できると思ったのですが、
入れたトグルの処理がすべてのリストに連動してしまって困っています。
そのため、1つのトグルをONにするとすべてON、1つのトグルをOFFにするとすべてOFFになってしまいます。
私の期待値として以下のようにリスト毎に設定したいです。
#[期待値]
リスト1 トグルスイッチON リスト2 トグルスイッチOFF リスト3 トグルスイッチOFF リスト4 トグルスイッチON リスト5 トグルスイッチON
#[現在の実行結果]
リスト1 トグルスイッチON リスト2 トグルスイッチON リスト3 トグルスイッチON リスト4 トグルスイッチON リスト5 トグルスイッチON または、 リスト1 トグルスイッチOFF リスト2 トグルスイッチOFF リスト3 トグルスイッチOFF リスト4 トグルスイッチOFF リスト5 トグルスイッチOFF
###追記:テンプレート全体部分
<div class="contents" v-else-if="isActive === '4'"> <p> <select v-model="selectBoxValue" v-on:change="changeAlertList" class="round"> <option v-for="(label,id) in selectBoxOptions" :value="id">{{ label }}</option> </select> </p> <div v-if="isLoading"> <img src="img/load.gif" /> </div> <label>===一括ON/OFF===</label> <div v-if="!isLoading"> <p v-if="isToggled==true && selectBoxValue > 1" class="error"> トグルON:失敗 </p> <p v-if="isToggled==false && selectBoxValue > 1" class="msg"> トグルOFF:成功 </p> <div v-if="hasRight && selectBoxValue > 1"> <label class="switch__label"> <input type="checkbox" class="switch__input" v-model="isToggled" v-on:change="changeToggle" /> <span class="switch__content"></span> <span class="switch__circle"></span> </label> </div> <div v-if="!hasRight && selectBoxValue > 1"> <label class="switch__label"> <input type="checkbox" class="switch__input" v-model="isToggled" disabled /> <span class="switch__content"></span> <span class="switch__circle"></span> </label> <p class="error">※メッセージ</p> </div> <p><select v-model="opelist" v-on:change="changeList"> <option value="0" selected>--リストを選択--</option> <option v-for="n in 5" v-bind:value="n">リスト{{n}}</option> </select> <label>===リストの表示===</label> <p><select v-model="opelist" v-on:change="changeList"> <option value="0" selected>--リストを選択--</option> <option v-for="n in 5" v-bind:value="n">リスト{{n}}</option> </select></p> <ul v-for="n in 5" v-bind:value="n">リスト{{n}} <div v-if="hasRight && selectBoxValue > 1"> <label class="switch__label"> <input type="checkbox" class="switch__input" v-model="isToggled[n-1]" v-on:change="changeToggle(n-1)" /> <span class="switch__content"></span> <span class="switch__circle"></span> </label> </div> <div v-if="!hasRight && selectBoxValue > 1"> <label class="switch__label"> <input type="checkbox" class="switch__input" v-model="isToggled[n-1]" disabled /> <span class="switch__content"></span> <span class="switch__circle"></span> </label> </div> </ul> </div> </div>
つたない説明で申し訳ありませんが、
ご存じの方よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー