当前位置: 首页 > 知识库问答 >
问题:

javascript - vue2中v-model绑定的属性为动态的,请问应该如何绑定?

凌运恒
2023-11-05

示例代码如下:

<template>  <el-input v-model='processInfo[key]'></el-input></template><script>export default {  data() {    return {      processInfo: {        name: '主项目',        children: [          {            name: '子项目',            personList: [              {                personName: '张三'              }            ]          }        ]      },      key: 'children[0].personList[0].personName',    }  }}</script>

我想通过key动态的绑定processInfo的属性,但是这样不生效,请问各位大佬有什么解决办法?

共有1个答案

欧照
2023-11-05

在 Vue.js 2 中,v-model 指令的工作方式是,它需要一个在组件实例中存在的属性(或计算属性)来进行双向数据绑定。在你的例子中,你试图绑定到 processInfo[key],但是这并不会工作,因为 processInfo[key] 并不是一个存在的属性或计算属性。这就是为什么你的代码没有按预期工作的原因。

对于更复杂的数据结构,你可以使用 Vue 的 v-bind:value(或简写为 v-model)来绑定到一个具体的路径。你需要创建一个计算属性来实现这个功能。

以下是你的代码的修改版本:

<template>  <el-input v-model="getValue(key)"></el-input></template><script>export default {  data() {    return {      processInfo: {        name: '主项目',        children: [          {            name: '子项目',            personList: [              {                personName: '张三'              }            ]          }        ]      },      key: 'children[0].personList[0].personName',    }  },  computed: {    getValue() {      return this.processInfo[this.key];    }  }}</script>

在这个修改后的版本中,我添加了一个名为 getValue 的计算属性。这个计算属性会根据 key 的值从 processInfo 中返回相应的值。这样,无论 key 的值如何变化,v-model 都会绑定到正确的路径上。

 类似资料:
  • FXJXM的数量跟normal的数量是一样的。请问v-for渲染el-radio-group的时候,v-model怎么绑定

  • 题目描述 关于v-model动态绑定多层级的属性名 题目来源及自己的思路 因为我想做一个自动生成表单的组件,然后绑定初始值时,希望通过对象的层级关系去绑定v-model,这样最后提交的数据,也将是带有层级的对象数据。 相关代码 你期待的结果是什么?实际看到的错误信息又是什么? 假如modelProps接收到一个值是字符串"role.id",那我希望v-model可以变成form.role.id,如

  • 使用 v-model 指令,可以建立数据到模板的双向绑定。本质上它是如下写法的语法糖: <input v-model="value" /> => <input value={{ self.value }} ev-input={function(e) { self.value = e.target.value; this.update(); }.bind(this)} /

  • 本文向大家介绍vue中v-model对select的绑定操作,包括了vue中v-model对select的绑定操作的使用技巧和注意事项,需要的朋友参考一下 1、单选时 如果 v-model表达式的value初始值未能匹配任何选项,<select> 元素将被渲染为“未选中”状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐像上面这

  • 我在一个Vue项目上工作,实际上我试图将img src属性绑定到数据值,然后我使用setInterval函数动态更改url每次调用函数,但当我运行页面时,我得到一个错误就像 属性或方法“源”不是在实例上定义的,而是在呈现过程中引用的。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件。见:https://vuejs.org/v2/guide/reactivity.htm

  • 起初我是一个初学者 我看过很多教程,读过很多例子,甚至试图从JLS来理解这个主题,但我仍然有一些困惑或误解。 让我给你看我看不懂的问题。