如果 Vue.js 已填充,则不覆盖输入字段

Make Vue.js not overwrite input field if it's filled

在我们的代码中,我们传入一个参数,如果参数存在,Vue.js 在输入字段中使用该参数,到目前为止还不错;

<input type="text" placeholder="First name" :value="customers_firstname ? customers_firstname : ''">

但是,如果用户出错(未填写邮政编码等)并且重新加载此页面,他们对此字段所做的任何更改都将被遗忘。它默认恢复为 customers_firstname,即使他们将其编辑为他们母亲的名字或他们将其发送给谁。

我怎样才能使这个有条件,以便 Vue 仅在没有值的情况下填充该值?

使用计算

computed: {
      CustomerFillName() {
      if (this.customers_firstname != null || this.customers_firstname !== '') return this.customers_firstname
      return ''
    },
}
<input type="text" placeholder="First name" :value="CustomerFillName">

根据 Lawrence 的评论,我能够使用 v-model 部分解决此问题;

<input type="text" placeholder="First name" v-model="CustomerFirstNameAddressFunction">

然而,导致重置的重要因素是弹出窗口的亲子关系 - 因此为了使其完全持久,我必须访问根变量;

computed: {
    CustomerFirstNameAddressFunction: {
        get: function() {
            return this.$root.customers_firstname_address;
        },
        set: function (value) {
            this.$root.customers_firstname_address = value;
        }
    }
}

(可以向 getter 添加额外的逻辑,但最简单的方法是用 '' 实例化 var,这就是它丢失条件位的原因。)