Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Customizing item-text in v-select

Please tell me if we can customize item-text for v-select ?

I want customize each item in v-select, something like this :

:item-text="item.name - item.description"
like image 752
Clark Avatar asked May 25 '18 14:05

Clark


3 Answers

Yes you can, using scoped slot as described in the doc and provide a template.

For v-select you have two scoped slot :

  • selection : to describe how v-select should render items when selected
  • item : to describe how v-select should render items when opened

It looks like this :

<v-select> // Don't forget your props
  <template slot="selection" slot-scope="data">
    <!-- HTML that describe how select should render selected items -->
    {{ data.item.name }} - {{ data.item.description }}
  </template>
  <template slot="item" slot-scope="data">
    <!-- HTML that describe how select should render items when the select is open -->
    {{ data.item.name }} - {{ data.item.description }}
  </template>
</v-select>

CodePen with a complex example

Vuetify Doc about Scoped Slot in V-Select


Edit for Vuetify 1.1.0+ : Those slots are also available with new components v-autocomplete and v-combobox as they inherit from v-select.


Edit for Vue 2.6+, replace :

  • slot="selection" slot-scope="data" by v-slot:selection="data"
  • slot="item" slot-scope="data" by v-slot:item="data"
like image 81
Toodoo Avatar answered Nov 02 '22 13:11

Toodoo


Shorthand :

:item-text="item => item.name +' - '+ item.description"
like image 59
Mohsen Avatar answered Nov 02 '22 14:11

Mohsen


Slot removes autoselect on focus.

item-text tye can be: string | array | function

then we can make:

:item-text="text"

and

methods: {
  text: item => item.name + ' — ' + item.description
}
like image 43
br. Avatar answered Nov 02 '22 14:11

br.