vueを使用してアコーディオンを表示しています(アコーディオンの基礎CSSフレームワークを使用)。私はv-for
を使ってデータをループし、アコーディオンを構築します。アコーディオンの中には、4つのラジオボタンがあります。ユーザーが特定のもの(たとえばjob 3
)をクリックした場合、ラジオボタンの下に入力ボックスを表示する必要があります。Vue.js:v-forループとv-ifを使用して動的に作成されたvモデルを使用して要素を表示/非表示にする
<dd class="accordion-navigation" v-for="(job, index) in jobs">
<input type="radio" v-bind:name="'job-radio-' + job.id" value="job1">
<input type="radio" v-bind:name="'job-radio-' + job.id" value="job2">
<input type="radio" v-bind:name="'job-radio-' + job.id" value="job3">
<!-- The input box below should only be displayed if job 3 is selected. -->
<input type="text" v-bind:id="find-user-' + job.id">
</dd>
これを実行する方法を概念的に理解するのに少し問題があります。
私はすべてのラジオボタンでvモデルを作成し、それを動的に作成して、v-if
の入力で参照できると考えていました。しかし、これをやろうとするとページがレンダリングされません。これは私が以下で試したものです。
<dd class="accordion-navigation" v-for="(job, index) in jobs">
<input type="radio" v-bind:name="'job-radio-' + job.id" value="job1" v-model="jobNumber + job.id">
<input type="radio" v-bind:name="'job-radio-' + job.id" value="job2" v-model="jobNumber + job.id">
<input type="radio" v-bind:name="'job-radio-' + job.id" value="job3" v-model="jobNumber + job.id">
<!-- The input box below should only be displayed if job 3 is selected. -->
<template v-if="jobNumber + job.id == 'job3'">
<input type="text" v-bind:id="find-user-' + job.id">
</template>
</dd>
jobNumber
私は周りに運がない一重引用符を囲んでみました。
正しいトラックでさえいいですか?どのように私はこれを動作させるだろうか?
テンプレートは親タグでなければなりません –
あなたが望むのは 'job'オブジェクトごとに' selectedJob'の何らかの並べ替えで、あなたの 'v-model'がバインドするものです。このように:https://codepen.io/Kradek/pen/BJoymR?editors=1010 – Bert
@Bertオブジェクトに別のキーと値のペアを追加することは、まさに私が必要としていたものです!間違いなくこれを考えました。私は受け入れるためにあなたのコメントを回答として提出する必要があります。 – aCarella