gpt4 book ai didi

javascript - 如何在 Vue.js 中使用带有嵌套属性的 v-model

转载 作者:行者123 更新时间:2023-12-01 16:28:09 25 4
gpt4 key购买 nike

我创建了一个表单,我试图了解如何在 Vue.js 中使用带有嵌套属性的 v-model

这是我的模板的代码,如您所见,我正在尝试像这样引用嵌套属性: form.dobDate ,但是我如何引用 中的属性( dobDate dobMonth dobYear )已安装 watch ?这样我输入的任何内容都会在页面刷新时保留在那里?

<template>
<div>
<b-form novalidate>
<b-form-select name="dobDate" id="dobDate" v-model="form.dobDate" :options="optionsDays"></b-form-select>

<b-form-select name="dobMonth" id="dobMonth" v-model="form.dobMonth" :options="optionsMonths"></b-form-select>

<b-form-input
placeholder="Year of Birth"
required
autofocus
class="form-control"
name="year"
id="year"
min="0"
max="2003"
type="number"
v-model="form.dobYear"
></b-form-input>

<input type="text" v-model="name" />

<b-button type="submit" variant="primary">Submit</b-button>
</b-form>
<b-card class="mt-3" header="Form Data Result">
<pre class="m-0">{{ form }}</pre>
</b-card>
</div>
</template>

这是脚本代码:
<script>
export default {
data() {
return {
name: "",
form: {
dobDate: {
selected: ""
},
dobMonth: {
selected: ""
},
dobYear: "",
name: ""
},
optionsMonths: [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
],
show: true
};
},

mounted() {
if (localStorage.name) {
this.name = localStorage.name;
}
},
watch: {
name(newName) {
localStorage.name = newName;
},
deep: true
},

computed: {
optionsDays() {
return Array.from(Array(31).keys());
}
},

methods: {
onSubmit(evt) {
evt.preventDefault();
alert(JSON.stringify(this.form));
},
getDates() {
return Array.from(Array(31).keys());
}
}
};
</script>

如您所见,我有一个表单对象,其中包含要绑定(bind)的嵌套属性,并且我也在使用 已安装 () 和 watch 在页面刷新或提交表单时将数据存储在本地存储中(目前没有验证)。

最佳答案

你可以看form深入(访问其嵌套字段)并使用以下方法遍历它的值:

  Object.keys(after).forEach(key=>{
localStorage[key]=after[key]
})
 watch: {
form: {
handler: function(after, before) {
Object.keys(after).forEach(key=>{
localStorage[key]=after[key]
})
},
deep: true
}
}

关于javascript - 如何在 Vue.js 中使用带有嵌套属性的 v-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com