首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当对象尚未在vue中声明时,如何处理对象的输入?

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

Stack Overflow用户
提问于 2021-01-22 21:00:54
回答 1查看 31关注 0票数 0
代码语言:javascript
复制
<input type="text" v-model="object[obj]">

输出:

代码语言:javascript
复制
object:{'obj1':value}

输入时期望的结果:

代码语言:javascript
复制
object:{'obj1':{'prop1':value,'prop2':value}} 
代码语言:javascript
复制
<input type="text" v-model="obj">

<input type="text" v-model="object[obj]['prop1']">
<input type="text" v-model="object[obj]['prop2']">
{{object}}
代码语言:javascript
复制
export default {
  data() {
    return {
      obj: '',
      object: {},
    }
  }
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 22:12:24

您可以在<input>上添加一个使用vm.$set()创建新对象键的change-event处理程序:

代码语言:javascript
复制
<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>应该是conditionally rendered with v-if,以避免在未定义的对象上使用prop1/prop2

代码语言:javascript
复制
<template>
  <div>
    <template v-if="object[obj]">
      <input v-model="object[obj]['prop1']">
      <input v-model="object[obj]['prop2']">
    </template>
  </div>
</template>

demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65845688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档