Как сделать теги для каждого выбора уникальными в vue-multiselect

#vue.js #vue-multiselect

#vue.js #vue-multiselect

Вопрос:

У меня есть пользовательский выпадающий список, созданный с помощью vue-multiselect . Это должен быть простой выпадающий список, в котором выбранные варианты перечислены в виде тегов. Это работает, но когда я добавляю другие выпадающие списки, выбранные теги в одном выпадающем списке отображаются во всех остальных. Как я могу сделать так, чтобы в каждом выпадающем списке отображались только выбранные для него параметры, не заполняя другие выпадающие списки?

Вот мой код:

  <multiselect
         v-model="value"
             tag-placeholder="Add this as new tag"
             placeholder="Assesors"
             label="name"
             track-by="code"
             :options="options"
             :multiple="true"
             :taggable="true"
   ></multiselect>


 <multiselect
         v-model="value"
             tag-placeholder="Add this as new tag"
             placeholder="Assesors"
             label="name"
             track-by="code"
             :options="options"
             :multiple="true"
             :taggable="true"
   ></multiselect>


 <multiselect
         v-model="value"
             tag-placeholder="Add this as new tag"
             placeholder="Assesors"
             label="name"
             track-by="code"
             :options="options"
             :multiple="true"
             :taggable="true"
   ></multiselect>
 

и мой javascript:

  data() {
    return {
      showAddUserDialog: false,
       value: [],
       options: [
        { name: "Assesors", code: "as" },
        { name: "Finance", code: "fi" },
        { name: "Sales", code: "sa" },
      ]
    }
  }
 

и рабочий codepen:

https://codesandbox.io/s/multiselect-tag-example-forked-qecqn

Ответ №1:

Вы используете ту же переменную «value», что и v-model для трех входных данных, что приводит к тому, что все выбранные элементы отображают одни и те же выбранные данные.

Попробуйте изменить разные переменные в v-модели (например, value, value1 и value2), и все будет в порядке.

      <multiselect
         v-model="value"
             tag-placeholder="Add this as new tag"
             placeholder="Assesors"
             label="name"
             track-by="code"
             :options="options"
             :multiple="true"
             :taggable="true"
   ></multiselect>


 <multiselect
         v-model="value1"
             tag-placeholder="Add this as new tag"
             placeholder="Assesors"
             label="name"
             track-by="code"
             :options="options"
             :multiple="true"
             :taggable="true"
   ></multiselect>
 

и обязательно добавьте value1 в js:

  data() {
    return {
      showAddUserDialog: false,
       value: [],
       value1: [],
       options: [
        { name: "Assesors", code: "as" },
        { name: "Finance", code: "fi" },
        { name: "Sales", code: "sa" },
      ]
    }
  }