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

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

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

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

Q&A

解決済

1回答

3768閲覧

Vue.js v-for内で条件の付け方

okpk

総合スコア38

Vue.js

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

0グッド

0クリップ

投稿2018/12/05 04:06

配列の中から特定の条件に合うhtmlを生成したのですが、
v-forの中でv-ifを用いた検索をすると条件通りの要素は取得し出力されるのですが、配列の数だけhtml自体は生成されてしまうので困っています。どのように書けるのでしょうか。
以下コードになります。

このようなjsonファイルをaxiosを用いて配列store.state.projectsDataに格納しています。

projectJson

1[ 2 { 3 "id": 4, 4 "name":"kyoto" 5 }, 6 { 7 "id": 3, 8 "name":"hiroshima", 9 }, 10 { 11 "id": 2, 12 "name":"gihu", 13 }, 14 { 15 "id": 1, 16 "name":"yokohama" 17 } 18]

userIdはURLのpathに当たります。(http://localhost:3000/projects/kyoto)。**userId**と配列内のnameの一致を見ています。

vue

1<div v-for="item in $store.state.projectsData" v-bind:key="item.id"> 2 <template v-if="item.name === userId"> 3 {{item}} 4 </template> 5</div>

結果としては目当てのkyotoの内容が出力されたのですが、検証で見た際に

<div> <!----> </div>

そもそもv-for内で条件分岐するべき出ないと思うのですが、、
このような要素が3つ生成されます。

このままでも問題ないのか。
何か他に書き方があるのか。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

v-ifを外側のdivにつければいいのではないでしょうか。

html

1<div id="app"> 2 <div 3 v-for="item in $store.state.projectsData" 4 v-bind:key="item.id" 5 v-if="item.name === userId"> 6 {{item}} 7 </div> 8</div>

JSFiddle Demo

js

1Vue.use(Vuex) 2const store = new Vuex.Store({ 3 state: { 4 projectsData: [ 5 { 6 id: 4, 7 name: 'kyoto', 8 }, 9 { 10 id: 3, 11 name: 'hiroshima', 12 }, 13 { 14 id: 2, 15 name: 'gihu', 16 }, 17 { 18 id: 1, 19 name: 'yokohama', 20 }, 21 ], 22 }, 23}) 24new Vue({ 25 el: '#app', 26 store, 27 data: { 28 userId: 'kyoto', 29 }, 30})

投稿2018/12/05 05:16

karamarimo

総合スコア2551

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

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

okpk

2018/12/05 05:43 編集

サンプルコードまで添えて回答して頂きありがとうございます。 余計なdivが生成されないで表示できました。 要素検証で見ると、 <div></div> <!----> <!----> <!----> <!----> となるのですが、やはりこの<!---->部分はv-forを使う限り残ってしまうので、この部分が気に入らなければ違う方法を考えるしかないかんじでしょうか。(表示上やソース上何も問題はないのですが。)
karamarimo

2018/12/05 05:51 編集

<!----> は単なる html のコメントなので何の問題も無いと思いますよ。気に入らない理由はなんでしょうか?
okpk

2018/12/05 06:01

今後データが100、200件ほどに増えた場合、開発時の要素検証時に膨大なコメントアウトが目に留まる..くらいでしょうか。 気にかけなければ問題無いですね。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問