Vue с несколькими вариантами ограничения выбора

#javascript #vue.js

#javascript #vue.js

Вопрос:

У меня есть приложение Vue, которое использует multiselect, я хочу, чтобы оно было таким, чтобы было 5 вариантов (a, b, c, d, e), и пользователь мог выбрать максимум 3. Я проверил документы, и это, похоже, не является поддерживаемым параметром, поскольку ограничение, о котором он упоминает, просто ограничивает количество видимых после выбора.

Вот мой текущий код, но он не делает то, что я хочу

Данные:

 selectedOptions: [],
optionsLimit: 3,
optionsList: ["a","b","c","d","e",]
  

Шаблон:

 <multiselect v-model="selectedOptions" :multiple="true" :options="optionsList" :hide-selected="true"></multiselect>
  

Текущее поведение:

Позволит выбрать все 5 вариантов вместо ограничения 3.

Как я могу сделать так, чтобы пользователь мог выбрать максимум 3 варианта?

Ответ №1:

Для этого вы можете использовать max prop: снимок из документов vue-multiselect

Шаблон:

 <multiselect v-model="selectedOptions" :multiple="true" :options="optionsList" :hide-selected="true" :max="3"></multiselect>

  

Комментарии:

1. Спасибо! Не знаю, как я это пропустил

Ответ №2:

Вы можете использовать функцию отключения , чтобы отключить использование множественного :disabled="selectedOptions.length>=optionsLimit" выбора . Приведенный ниже код:

 // register globally
Vue.component('multiselect', window.VueMultiselect.default)

new Vue({
  el: '#app',
  data: {
    selectedOptions: [],
    optionsLimit: 3,
    optionsList: ["a", "b", "c", "d", "e", ]
  },
})  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/vue-multiselect@2.1.0"></script>
<link rel="stylesheet" href="https://unpkg.com/vue-multiselect@2.1.0/dist/vue-multiselect.min.css">

<div id="app">

  <multiselect v-model=selectedOptions :multiple="true" :options="optionsList" :hide-selected="true" :disabled="selectedOptions.length>=optionsLimit"></multiselect>

</div>