我正在使用v-for创建大量输入。这些输入将成为对象的键,因此我不能使用v模型直接将输入链接到对象。应用程序用户还可以添加和删除键,因此只有对象本身是全局值。相反,我正在这样做:
<b-form-group horizontal label-cols="1" v-for="(site, a) in config.sites">
<b-form-group horizontal label-cols="1" label="Site: ">
<b-form-input type="text" :value="a" @change="changeKey" required />
</b-form-group>
</b-form-group>
changeKey是一种需要旧密钥的方法(此方法用于更改从该站点其他位置抄袭的对象的密钥):
changeKey: function(old_key, new_key) {
Object.defineProperty(this.config, new_key, Object.getOwnPropertyDescriptor(this.config, old_key));
delete this.config[old_key];
}
我知道我只能用传递旧值
<b-form-input type="text" :value="a" @change="changeKey(a)" required />
,只有新值带有
<b-form-input type="text" v-model="a" @change="changeKey(a)" required />
但是,我需要同时使用新旧值。我似乎无法传递事件对象,该事件对象是其他针对类似问题的答案提出的解决方案:
@change="changeKey(a, $event)"
$event
和event
无法识别为变量。
如何通过方法访问旧值和新值? (更改动态分配给Vue组件的对象的键的替代方法也可能会有所帮助,但这是不合时宜的。)