#javascript #vue.js #vuejs2
Вопрос:
Я изучаю vue js и пытаюсь создать группу условного ввода с помощью vue js. У меня есть 2 переключателя и 1 выпадающий выбор. Я хочу, чтобы при выборе радио 1 раскрывающийся список был включен. и когда выбрано Радио 2, выпадающий список отключен. Я сделал код, как показано ниже. Кто-нибудь может мне помочь?
new Vue({
el: '#app',
data: {
radioTypes: [
{
name:'Type 1',
value:60
},
{
name:'Type 2',
value:70
}
],
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" integrity="sha512-P5MgMn1jBN01asBgU0z60Qk4QxiXo86 wlFahKrsQf37c9cro517WzVSPPV1tDKzhku2iJ2FVgL67wG03SGnNA==" crossorigin="anonymous" />
<div id="app">
<div v-for="data in radioTypes" v-bind:key="data.name">
<input type="radio" v-model="radioVal" name="storage-type" :id="'storage' data.name.toLowerCase()" :value="data.name">
<label :for="'storage-' data.name.toLowerCase()">{{data.name}}</label>
</div>
<div>
<select id="inputGroupSelect01" :disabled="radioTypes.name === 'Type 2'">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
Ответ №1:
Вам не нужно создавать вычисляемое свойство, вы можете просто проверить его вот так.
new Vue({
el: '#app',
data: {
radioVal: '',
}
});
<div id="app">
<input type="radio" v-model="radioVal" name="radioType" value="one">
<label for="Radio1">Radio 1</label>
<input type="radio" v-model="radioVal" name="radioType" value="two">
<label for="Radio1">Radio 2</label>
<div>
<!-- Disable the select when radioVal value is two -->
<select id="inputGroupSelect01" :disabled="radioVal === 'two'">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
Комментарии:
1. Я отредактировал фрагмент в посте выше. что делать, если у меня радио динамического типа? как он отключается в зависимости от типа радио при
Type 2
выборе?2. Вы не должны проверять radioType
:disabled="radioTypes.name === 'Type 2'"
, но radioVal, чтобы отключить переключатель, так как в radioVal значение будет изменено.:disabled="radioVal === 'Type 2'"
.3. о да, я понимаю
Ответ №2:
В дополнение к другому ответу, вероятно, стоит отметить, что в идеале лекарство должно быть чистым и не иметь так называемых «побочных эффектов». Это в основном означает, что вычисленный не должен изменять другие переменные, но возвращать что-то на основе других переменных (отсюда и название «вычисленный»). Итак, вот так:
radioEnable(){
return this.radioVal === 'one';
}
Но, как уже говорилось, здесь вам даже не нужны вычисления.