javascript - 如何绕过 vuetify 的 v-select 内部状态

标签 javascript vue.js vuetify.js

我试图阻止在使用 vuetify 的 v-select 组件时“选择”一个值。

给定:

<v-checkbox
    v-model="allowChanges"
></v-checkbox>
<v-select
    v-model="twoWayComputed"
    :items="items"
></v-select>

new Vue({
  el: '#app',
  data: () => ({
    selected: "Foo",
    allowChanges: false,
    items: ['Foo', 'Bar', 'Fizz', 'Buzz']
  }),
  computed: {
    twoWayComputed: {
      get(){
        return this.selected
      },
      set(val){
        if (this.allowChanges){
          console.log("updating")
          this.selected = val
        }
      }
    }
  }
})

代码笔:https://codepen.io/anon/pen/mYNVKN?editors=1011

选择另一个值时,所选值未更新。但是 v-select 仍然显示新选择的值。

我什至尝试了各种“技巧”,比如

  set(val){
    if (this.allowChanges){
      console.log("updating")
      this.selected = val
    } else {
      this.selected = this.selected
    }

但没有运气。

我相信 v-select 正在维护自己的内部选择值。

最佳答案

这什么都不做:

this.selected = this.selected

你必须设置值,等待vue更新props,然后再设置回来:

const oldVal = this.selected
this.selected = val
this.$nextTick(() => {
  this.selected = oldVal
})

Codepen

关于javascript - 如何绕过 vuetify 的 v-select 内部状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56501460/

相关文章:

javascript - vue 异步加载组件点击

javascript - Vuetify 数据表 :item-class doesn't do anything

javascript - 在自定义(非原生)组件上使用 v-tooltip

javascript - 通过参数调用时的函数上下文

javascript - Meteor React - 单击按钮可以重新订阅另一个订阅

javascript - 人力车:图形最大 y 轴被 chop

vue.js - 可重复使用的嵌套 VueJS 组件

javascript - Vuetify 列表项未正确显示

stylus - 如何使用自定义颜色覆盖 Vuetify 变量?

javascript - UL inside UL JQuery 问题