javascript - 如何将字符串值传递给指向数据对象的 v-model(动态评估)
问题描述
我想将对象值 ( product.id
) 传递给v-model
输入的 a。问题是当我这样做时,我得到一个字符串“product.id”而不是product.id
一个对象。如何转换字符串?或者这是错误的方式?
我尝试了 JSON.parse,但它不起作用。
<template>
<div>
<div v-for="field in fields" :key="field.id">
<label>{{ field.name }}</label>
<input type="text" v-model="field.model" />
</div>
</div>
</template>
<script>
export default{
data() {
return {
product: {
id: '',
name: '',
price: ''
},
fields: [
{
name: 'Name 1',
model: 'product.id',
},
{
name: 'Name 2',
model: 'product.name',
},
{
name: 'Name 3',
model: 'product.price',
}
]
}
}
}
</script>
解决方案
不知道你为什么要这样做,但由于v-model
只接受一个对象,我能想到的一种方法是将s 与评估版本重新分配为对象。不一定是一个好方法,但有效:field.model
new Vue({
el: '#app',
data() {
return {
product: {
id: '112233',
name: 'Random name',
price: '$34.5'
},
fields: [{
name: 'Name 1',
model: 'product.id',
},
{
name: 'Name 2',
model: 'product.name',
},
{
name: 'Name 3',
model: 'product.price',
}
]
}
},
computed: {
specialFields() {
return this.fields.map(item => Object.assign(item, {
model: eval(`this.${item.model}`)
}));
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div v-for="field in specialFields" :key="field.id">
<label>{{ field.name }}</label>
<input type="text" v-model.trim="field.model" />
</div>
</div>
推荐阅读
- python - 打印语句只执行一次,但使用多个类实例
- windows - 如何跟踪选定的进程 ALPC 调用内核模式?
- mysql - 我的 SQL - 日期和第二天下午 6 点之间的时间差异
- c++ - 没有灰色重叠的否定图像
- r - 使用 github API 时如何指定用户代理?
- javascript - 如何制作正则表达式来过滤 URL 模式,使其在 8 个字符通配符和目录斜杠之后终止?
- html - 如何启用在页面加载时选中的第一个复选框并仅显示数据目标 div 并隐藏其他数据,并且一次仅选中一个复选框
- node.js - 无法通过 WebDAV 使用 MS Word 保存 .doc 文件 - 未发送 PUT 请求
- ios - CloudKit:传入的CKNotification反复推送
- node.js - 如何正确读取 philips hue 返回的对象