【问题标题】:Vuetify v-text-field not updating value when it is changed. Even on $forceUpdate()Vuetify v-text-field 在更改时不更新值。即使在 $forceUpdate()
【发布时间】:2019-11-10 08:24:44
【问题描述】:

Vuetify v-text-field 在更改时不会更新值。即使在 $forceUpdate() 和使用 $set 时

我尝试在没有 $forceUpdate 和 $set 的情况下使用它,但即使使用这两种方法它也不起作用

DOES 的工作示例 WITHOUT vuetify: https://jsfiddle.net/gu273qy0/3/

工作的示例 Vuetify: https://jsfiddle.net/gu273qy0/5/

这两个例子都可以使用这个javascript

new Vue({
  el: "#app",
  data: () => ({
    todos: ['']
  }),
  methods: {
    setText(index, todo){
        if (todo.toString().match(/^((([A-Z]{3})[UJZ](\d{0,7}))|[A-Z]{0,3})$/)) {
        this.$set(this.todos, index, todo)
      }

      this.$forceUpdate()
    },
    addText() {
        console.log(this.todos)
            this.todos.push('')
    }
  }
})

我希望完全相同的实现适用于 vuetify 和不使用 vuetify。不幸的是,这种情况并非如此。只有非 vuetify 示例有效。

有效值或待办事项的示例是AAAU0101201

无效值的一个例子是AAAA

【问题讨论】:

    标签: vue.js vuetify.js v-model


    【解决方案1】:

    我无法真正解释为什么使用或不使用 Vuetify 的结果不一样,但实际上,以 Vuetify 为例,如果输入错误的值,则不会修改 todos 数组,因此模型不会不会更新

    我认为您应该例如处理 @blur 事件: https://jsfiddle.net/v6m2tyrs/1/

    【讨论】:

    • 数组不会被修改,但文本字段没有反映这一点。这对用户非常不友好。在您展示的示例中,如果用户输入错误,则输入被清除。这可能非常令人困惑。
    • 当您创建一个并不总是更新数据的@input 处理程序时,就会引起混淆。如果您不知道自己在做什么,我建议您坚持使用 v-model.t
    • 虽然有点离题,但您能否详细说明输入事件应该做什么?我认为 v-model 在我的情况下不起作用,因为我需要在更改值的同时进行验证。
    • 当待办事项不正确时,您希望何时清除该字段。我想这不是输入,因为如果你这样做,该字段将在第一次按键后清除。这就是为什么我认为你需要处理@blur。
    • 我的解决方案不是在做你想要的吗?
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2019-02-09
    • 2021-05-13
    • 2021-08-19
    相关资源
    最近更新 更多