【问题标题】:VueJS/Vuex: Cannot access to real value of inputVueJS/Vuex:无法访问输入的实际值
【发布时间】:2018-02-26 01:51:24
【问题描述】:

如果 class 的当前值与绑定的 Vuex 值不同(知道 Vuex 值将只有在使用 axios 将更改成功发送到服务器后才提交,我也在使用 _debouce,所以总是有延迟)。

我的问题是,在isEqual 中,this.usualname 的值始终与其关联的 Vuex 值相同,它不反映input 值的真实状态(而currentValue 在usualname setter 可以)。

我还能如何在isEqual 中检索我的input 的当前值?或者我可以直接从usualname setter 更改input class 吗?

我的输入设置如下:

<input type="text"
    v-model="usualname"
    @input="mymet(
        'company',
        $store.state.company_data.id,
        'usual_name',
        $event.target.value)"
    :class="isEqual ? 'form-control is-valid' : 'form-control is-invalid'">

在计算中,我有这个:

usualname: {
    get () {
        return this.$store.state.company_data.usual_name
    },
    set (currentValue) {
    }
},
isEqual: {
    get: function() {
        return this.usualname === this.$store.state.company_data.usual_name
    },
    set: function(value) {
    }
},

【问题讨论】:

  • 将usualname 转换为data 字段而不是computed 怎么样?
  • 如果我将usualname: this.$store.state.company_data.usual_name 放入data(),input 将不会被初始化。可能是因为设置输入值时 Vuex 存储还没有准备好。
  • 您已将usualname 定义为等于存储值。不可能是别的。

标签: vue.js vuex


【解决方案1】:

将isEqual 设为data 项目。在usualname.set 中,将其设置为false(您可能需要检查新值是否与旧值不同)。将watch 放在usualname 上,将其设置为true。

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 1970-01-01
    • 2018-11-10
    • 2021-10-02
    • 2017-06-23
    • 2017-01-28
    • 1970-01-01
    • 2023-03-21
    • 2020-09-09
    相关资源
    最近更新 更多