VueでチェックボックスによるORの検索機能を実装しました。
(機能:各都市にチェックを付け件数が増えていく)
そのチェックした件数に対して、チェックボックスによる絞り込み機能を実装していきたいと思っているのですがやり方がわかりません。
現状のコード
<div id="app"> <p>都市名を選択してください</p> <table class="table"> <tbody> <tr> <td> <input type="checkbox" v-model="show1" /> </td> <td>東京</td> </tr> <tr> <td> <input type="checkbox" v-model="show2" /> </td> <td>大阪</td> </tr> <tr> <td> <input type="checkbox" v-model="show3" /> </td> <td>名古屋</td> </tr> </tbody> </table> <p>特徴を選択してください</p> <div><input type="checkbox" v-model="show4" />居酒屋</div> <div><input type="checkbox" v-model="show5" />イタリアン</div> <div><input type="checkbox" v-model="show6" />ラーメン屋</div> <p>{{this.filteredList.length}}件</p> </div> <script src="https://unpkg.com/vue@2.5.17"></script> <script> var app = new Vue({ el: "#app", data: { dataList: [ { id: 121, city: "Osaka", preference: "1" }, { id: 123, city: "Fukuoka", preference: "1" }, { id: 425, city: "Osaka", preference: "1" }, { id: 645, city: "Tokyo", preference: "1" }, { id: 326, city: "Osaka", preference: "1" }, { id: 876, city: "Tokyo", preference: "1" }, { id: 456, city: "Osaka", preference: "2" }, { id: 335, city: "Osaka", preference: "2" }, { id: 471, city: "Tokyo", preference: "2" }, { id: 345, city: "Osaka", preference: "2" }, { id: 857, city: "Fukuoka", preference: "2" }, { id: 455, city: "Osaka", preference: "3" }, { id: 997, city: "Osaka", preference: "3" }, { id: 121, city: "Tokyo", preference: "3" }, { id: 115, city: "Osaka", preference: "3" }, { id: 668, city: "Fukuoka", preference: "3" } ], show1: false, show2: false, show3: false, show4: false, show5: false, show6: false }, computed: { filteredList: function() { // 絞り込み機能 var newList = []; for (var i = 0; i < this.dataList.length; i++) { var isShow = false; if (this.show1 && this.dataList[i].city == "Tokyo") { isShow = true; } if (this.show2 && this.dataList[i].city == "Osaka") { isShow = true; } if (this.show3 && this.dataList[i].city == "Fukuoka") { isShow = true; } // ここからのコードの記載がわからない // 下記のようにすると、特徴が何も選択されていないと件数が0件になってしまう if (!this.show4 && this.dataList[i].preference == "1") { isShow = false; } if (!this.show5 && this.dataList[i].preference == "2") { isShow = false; } if (!this.show6 && this.dataList[i].preference == "3") { isShow = false; } if (isShow) { newList.push(this.dataList[i]); } } return newList; } } }); </script>
都市の中でor,特徴の中でor,都市と特徴についてはandで良いのですか?
また検索件数だけ更新すればよいのでしょうか?idとか表示しますか?
すいません追記をさせて頂きます。
「都市」選択のチェックボックス:OR検索
「特徴」選択のチェックボックス:AND検索 ※都市で選択をした表示結果もとに絞り込む形
検索件数だけ表示でidとかは表示しない予定です。
都市で選択をした表示結果もとに、チェックされている特徴のもので絞り込むことが要件なら「特徴が何も選択されていないと件数が0件になってしまう」のは正常な動作ではないでしょうか。
希望とする動作が仕様として拾い切れていないのでは?
特徴が一つもチェックがついていないときは0件で大丈夫ですか?
特徴が一つもチェックがついていないとき、選択件数を実際の件数で表示させたいです。尚、「特徴」チェックボックスをセレクトボックスに変更した場合は、思った動作ができていました。
今回のような機能を実装する場合、通常はどのような実装が使われるのでしょうか。
回答1件
あなたの回答
tips
プレビュー