Search code examples
javascriptvue.jsmethodsvuetify.jsv-select

How can I change the selected v-select item using a method?


I am trying to set the selected value of my v-select component in a method in the script part. These are the the code parts:

    <v-flex xs4>
        <v-select v-model="selected" :items="items" item-text="name" 
        item-value="value" outlined class="ml-2 mr-1" return-object></v-select>
    </v-flex>

and the part of the script:

export default {
  return{
    data: function () {
        items: [
            { name: 'item 1', value: 1 },
            { name: 'item 2', value: 2 },
            { name: 'item 3', value: 3 }],
        selected: { name: 'iteam 1', value: 1 }
    },
    methods: {
        apply (component) {
            for (var i in this.items.entries()) {
                if (i.name === component.item) {
                    this.selected.name = i.name
                    this.selected.value = i.value
                }
            }
        }
    }
  }
}    

I've tried different versions like

this.selected = i

this.selected[name] = i.name
this.selected[value] = i.value

this.selected = { i.name, i.value }

but nothing is working.


Solution

  • It's and old question but Let me post my answer to help others as well, after alot of search I have come to this point, and I want to share it with others as well.

    //This will load all your items in dropdown
    <v-select
       v-model="selected"
       :items="items"
       item-text="name"
       item-value="value"
       label="Select Item"
       dense>
    </v-select>
    

    Now Edit Part

    Lets say you want to edit a record, so you will probably pass the record id in edit method of your vuejs then inside edit method of vuejs, you will do an edit axios call for that specific record to first show it inside fields and then you will update. But before update you need to do something inside edit method of your vuejs when you will have already loaded data for that specific id.

    Now lets say you have received a record from database according to a specific id, you will see a dropdown id I mean to say a foreign key for a dropdown that you had saved during storing data.

    Suppose you have items array which holds whole data for a dropdown. Inside this you are having an value and name fields. So you have this items array and an object from database during edit for a specific record. Now you are good to go with below code.

    Inside Edit Method of vuejs

    //item_id it is like a foreign key for dropdown you have in your table
    this.selected = this.items.find(item => item.value === parseInt(res.data.item_id))
    this.selected = parseInt(this.selected.item_id)
    

    Note: I am doing parseInt() it's because when you check in console the primary key is an integer like 1 but foreign key like rating_id is string i-e "1". You can also use two equals == if you are not using parseInt() but I haven't checked that.

    For clearly understanding I am just sharing a sample edit code which might help you a bit

    editItem(id){
       axios.get( `/api/category/${id}` ).then( res => {
           if(res.data.status === 200){
             console.log(res.data.data)
             this.name = res.data.data.name
             this.id = res.data.data.id
             this.parent_id = this.list_categories.find(item => item.id === parseInt(res.data.data.parent_id))
             this.parent_id = parseInt(this.parent_id.id)
             this.edited = true
           }else{
             this.$toaster.error( res.data.message )
         }
      });
    }