0

我需要一个支持标记并且可以轻松设置样式的下拉菜单,所以我决定实现vue-multiselect. 它可以工作,但问题是页面加载时我的下拉列表中有一个预定义的标签,而我没有那个标签,我该如何删除它?这是它现在的样子:

图1

这是我希望它看起来的样子:

图2

这是我的html代码:

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

这是我的js:

data () {
    return {
     showAddUserDialog: false,

      value: [
        { name: 'Assesors', code: 'as' }
      ],
      options: [
        { name: 'Assesors', code: 'as' },
        { name: 'Finance', code: 'fi' },
        { name: 'Sales', code: 'sa' }
      ]
    }
  },
  methods: {
    addTag (newTag) {
      const tag = {
        name: newTag,
        code: newTag.substring(0, 2) + Math.floor((Math.random() * 10000000))
      }
      this.options.push(tag)
      this.value.push(tag)
    }
  }
4

1 回答 1

1

好吧,通过<multiselect>您使用的配置和您显示的预期行为......
您有这个https://imgur.com/a/D9nEKfD成为这个https://imgur.com/a/baTYXht

我看起来你想加载你的页面只显示占位符,但如果你只想显示你的占位符,你不应该在value变量中有一个值,因为你有:

data () {
  return {
    showAddUserDialog: false,
    value: [
      { name: 'Assesors', code: 'as' } // <- remove this
    ],
    options: [
      { name: 'Assesors', code: 'as' },
      { name: 'Finance', code: 'fi' },
      { name: 'Sales', code: 'sa' }
    ]
  }
}

因为组件的行为是显示您当前的标签,对吧?
因此,如果此标签是占位符,您可以将其添加到value用户提交表单时,而无需选择任何其他标签。

但是,如果您想将其作为组件的价值和技巧以仅将其显示为占位符,我建议您深入研究有关自定义模板的文档...

这里谈论它https://vue-multiselect.js.org/#sub-custom-option-template
这里谈论标签槽 https://vue-multiselect.js.org/#sub-slots

这是一个例子:
编辑多选标记示例

于 2020-11-21T14:31:21.100 回答