避免在 b-input blur 上将 null 转换为空字符串

Avoid converting null to empty string on b-input blur

我在 Vue JS 2.6.6 中遇到了反应性问题。不确定这是否是一个问题,或者我在这里遗漏了什么。

我正在通过 axios 对 MySQL 数据库中的一个对象进行水化:

resource:Object
   id: 123
   alt: null
   file:"2a72d890d0b96ef9b758784def23faa1.jpg" 
   type:"jpg"
}

表单正在通过 v-model 处理属性: <b-input v-model="resource.alt" />

我可以看到,在 blur 事件中,除了没有进行任何更改外,resource.alt 属性 正在从 null 更改为空字符串 ""

resource:Object
   id: 123
   alt: ""
   file:"2a72d890d0b96ef9b758784def23faa1.jpg" 
   type:"jpg"
}

那么处理这个问题的最佳方法是什么?我不认为从数据库中获取所有 null 字段作为空字符串是一个很好的解决方案。我的意思是 IFNULL(files.alt,'') AS alt

另一方面,由于我通过循环遍历所有记录并将所有空属性设置为空字符串来获取大量记录,因此看起来效率很低。

我需要的是将 null 属性保留为 null 或以某种方式从头开始将所有 null 属性解析为 empty 字符串。

仅供参考,我正在使用 vee-validate,所以我需要验证对象是否已更改 pristine 标志,如果对象有,则设置为 false被操纵。由于从 null 更改为 ""

,此行为将标志设置为 false

编辑 这越来越奇怪了。我将 resource 传播到组件中的本地数据的方式是单击列表中的一个元素。

data: () => ({
        files: [],
        resource: {}
})
<div v-for="file in files" :key="file.id"
    @click.exact="handleIndividualCheck(file)">
    {{ file.file }}
</div>
methods: {
    handleIndividualCheck (item) {
       this.resource = { ...item }
    }
}

我第一次 select 一个项目时, null 属性 被转换为一个空字符串,如解释的那样。 下一次,一切都按预期进行

这实际上是一个 bootstrap-vue 版本 2.19.0 的错误 我已经报告了这个问题,修复将合并到下一个版本中。

Link 发出:https://github.com/bootstrap-vue/bootstrap-vue/issues/6078