繁体   English   中英

当 object 尚未在 vue 中声明时,如何处理对象的输入?

[英]how to handle input for objects when the object has not yet been declared in vue?

<input type="text" v-model="object[obj]">

Output:

object:{'obj1':value}

输入时的期望结果:

object:{'obj1':{'prop1':value,'prop2':value}} 
<input type="text" v-model="obj">

<input type="text" v-model="object[obj]['prop1']">
<input type="text" v-model="object[obj]['prop2']">
{{object}}
export default {
  data() {
    return {
      obj: '',
      object: {},
    }
  }
}

这可以通过v-model或一些自定义输入处理程序来实现吗?

您可以在<input>上添加一个change事件处理程序,该处理程序使用vm.$set()创建新的 object 密钥:

<template>
  <div>
    <input v-model="obj" @change="onKeyChange">
  </div>
</template>

<script>
export default {
  methods: {
    onKeyChange() {
      const key = this.obj && this.obj.trim()
      if (key) {
        this.$set(this.object, key, { prop1: '', prop2: '' })
      }
    }
  }
}
</script>

其他依赖于object[obj]<input>应该v-if有条件地渲染,以避免在未定义的对象上使用prop1 / prop2

<template>
  <div>
    <template v-if="object[obj]">
      <input v-model="object[obj]['prop1']">
      <input v-model="object[obj]['prop2']">
    </template>
  </div>
</template>

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM