Vuetify v-select onchange事件返回先前选择的值而不是当前值

Mat*_*ell 13 javascript vue.js vuetify.js

我有一个<v-select>下拉列表,我想用作导航到其他页面的URL列表.我遇到的问题是onchange我正在使用的事件返回先前选择的值而不是当前选定的值.

我已经调整了代码以打印到控制台而不是测试.该:hint功能正常工作,所以我敢肯定这件事情做的onchange功能.

Codepen

这是代码:

<template>
  <v-app>
  <v-container fluid>
    <v-layout row wrap>
      <v-flex xs6>
        <v-select
          :items="items"
          v-model="select"
          label="Select"
          single-line
          item-text="report"
          item-value="src"
          return-object
          persistent-hint
          v-on:change="changeRoute(`${select.src}`)"
          :hint="`${select.src}`"
        ></v-select>
      </v-flex>
    </v-layout>
  </v-container>
</v-app>
</template>

<script>
/* eslint-disable */
    new Vue({
  el: '#app',
  data () {
      return {
        select: { report: 'Rep1', src: '/rep1' },
        items: [
          { report: 'Rep1', src: '/rep1' },
          { report: 'Rep2', src: '/rep2' }
        ]
      }
    },
    methods: {
      changeRoute(a) {
        //this.$router.push({path: a })
        console.log(a)
      }
    }
})
</script>
Run Code Online (Sandbox Code Playgroud)

A. *_*Lau 17

您不需要指定数据,因为这是我猜测更改事件默认通过的内容.

所以改变:

v-on:change="changeRoute(`${select.src}`)"
Run Code Online (Sandbox Code Playgroud)

只是

v-on:change="changeRoute"
Run Code Online (Sandbox Code Playgroud)

并在函数调用中:

  changeRoute(a) {
    this.$router.push({path: a.src })
    console.log(a)
  }
Run Code Online (Sandbox Code Playgroud)


Gav*_*n S 17

对于 vue3,v-select 的事件是update:modelValue

@update:modelValue="changeRoute"
Run Code Online (Sandbox Code Playgroud)


Jac*_*Goh 10

我不知道为什么change不能正常工作.但input确实有效.

https://codepen.io/jacobgoh101/pen/erBwKa?editors=1011

v-on:input="changeRoute(`${select.src}`)"
Run Code Online (Sandbox Code Playgroud)

也许您可以为Vuetify打开一个新的错误报告

  • 我认为这不是一个错误.只是在"更改"时,你在触发更改时传递参数,但尚未更新,因此参数仍然是旧值.只有在更新值后才会触发`input`,因此它可以工作. (2认同)

小智 6

我不知道为什么 ${select.src} 在 change 事件中保持以前的值。您可以尝试使用以下代码:

<v-select @change="changeRoute" ></v-select>

methods: {
      changeRoute(selectObj) {
        console.log(selectObj)
        console.log(selectObj.src)
     }
}
Run Code Online (Sandbox Code Playgroud)