如何在v-model中使用vue.js在多维json中使用动态密钥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在v-model中使用vue.js在多维json中使用动态密钥?相关的知识,希望对你有一定的参考价值。

我在选择带有以下多维json的动态键内的开始和结束数据的选项时遇到问题:

rowsels: {"days":{"mon":{"start":"08:00","end":"18:00"},"tue":{"start":"09:00","end":"15:00"},"fou":{"start":"10:00","end":"19:00"},"fif":{"start":"15:00","end":"17:00"},"fri":{"start":"08:00","end":"18:00"},"sat":{"start":"24hours","end":"00:00"},"sun":{"start":"closed","end":"00:00"}},"obs":"We do not serve on weekends and holidays. Vacation in December until February."};

我需要做这样的事情:

v-model="rowsels.days.{{ index }}.start"
v-model="rowsels.days.{{ index }}.end"

我已经尝试过许多其他方式,直到现在还没有任何结果。

有人能帮我吗? ♥

这是我要完成的完整代码:

new Vue({
        el: "#timesvue",
        data: {
           rowsels: {"days":{"mon":{"start":"08:00","end":"18:00"},"tue":{"start":"09:00","end":"15:00"},"fou":{"start":"10:00","end":"19:00"},"fif":{"start":"15:00","end":"17:00"},"fri":{"start":"08:00","end":"18:00"},"sat":{"start":"24hours","end":"00:00"},"sun":{"start":"closed","end":"00:00"}},"obs":"We do not serve on weekends and holidays. Vacation in December until February."},
           rows: {"mon":"Monday","tue":"Tuesday","fou":"Fourth","fif":"Fifth","fri":"Friday","sat":"Saturday","sun":"Sunday"}
        }
    });
 <script src="https://cdn.jsdelivr.net/npm/vue"></script>

<div id="timesvue">
	<div class="form-group" v-for="(row, index) in rows">
		<div class="col-md-2">{{ row }}</div>
		<div class="col-md-5">
			<select v-bind:name="'time[days]['+index+'][start]'" 
                v-model="rowsels.days.{{ index }}.start">

				<option value="closed">Closed</option>
				<option value="24hours">24 hours</option>
				<option value="00:00">00:00</option>
				<option value="00:30">00:30</option>
				<option value="01:00">01:00</option>
				<option value="01:30">01:30</option>
				<option value="02:00">02:00</option>
				<option value="02:30">02:30</option>
				<option value="03:00">03:00</option>
				<option value="03:30">03:30</option>
				<option value="04:00">04:00</option>
				<option value="04:30">04:30</option>
				<option value="05:00">05:00</option>
				<option value="05:30">05:30</option>
				<option value="06:00">06:00</option>
				<option value="06:30">06:30</option>
				<option value="07:00">07:00</option>
				<option value="07:30">07:30</option>
				<option value="08:00">08:00</option>
				<option value="08:30">08:30</option>
				<option value="09:00">09:00</option>
				<option value="09:30">09:30</option>
				<option value="10:00">10:00</option>
				<option value="10:30">10:30</option>
				<option value="11:00">11:00</option>
				<option value="11:30">11:30</option>
				<option value="12:00">12:00</option>
				<option value="12:30">12:30</option>
				<option value="13:00">13:00</option>
				<option value="13:30">13:30</option>
				<option value="14:00">14:00</option>
				<option value="14:30">14:30</option>
				<option value="15:00">15:00</option>
				<option value="15:30">15:30</option>
				<option value="16:00">16:00</option>
				<option value="16:30">16:30</option>
				<option value="17:00">17:00</option>
				<option value="17:30">17:30</option>
				<option value="18:00">18:00</option>
				<option value="18:30">18:30</option>
				<option value="19:00">19:00</option>
				<option value="19:30">19:30</option>
				<option value="20:00">20:00</option>
				<option value="20:30">20:30</option>
				<option value="21:00">21:00</option>
				<option value="21:30">21:30</option>
				<option value="22:00">22:00</option>
				<option value="22:30">22:30</option>
				<option value="23:00">23:00</option>
				<option value="23:30">23:30</option>
			</select>  
		</div>
		<div class="col-md-5">
			<select v-bind:name="'time[days]['+index+'][end]'"
             v-model="rowsels.days.{{ index }}.end">

				<option value="00:00">00:00</option>
				<option value="00:30">00:30</option>
				<option value="01:00">01:00</option>
				<option value="01:30">01:30</option>
				<option value="02:00">02:00</option>
				<option value="02:30">02:30</option>
				<option value="03:00">03:00</option>
				<option value="03:30">03:30</option>
				<option value="04:00">04:00</option>
				<option value="04:30">04:30</option>
				<option value="05:00">05:00</option>
				<option value="05:30">05:30</option>
				<option value="06:00">06:00</option>
				<option value="06:30">06:30</option>
				<option value="07:00">07:00</option>
				<option value="07:30">07:30</option>
				<option value="08:00">08:00</option>
				<option value="08:30">08:30</option>
				<option value="09:00">09:00</option>
				<option value="09:30">09:30</option>
				<option value="10:00">10:00</option>
				<option value="10:30">10:30</option>
				<option value="11:00">11:00</option>
				<option value="11:30">11:30</option>
				<option value="12:00">12:00</option>
				<option value="12:30">12:30</option>
				<option value="13:00">13:00</option>
				<option value="13:30">13:30</option>
				<option value="14:00">14:00</option>
				<option value="14:30">14:30</option>
				<option value="15:00">15:00</option>
				<option value="15:30">15:30</option>
				<option value="16:00">16:00</option>
				<option value="16:30">16:30</option>
				<option value="17:00">17:00</option>
				<option value="17:30">17:30</option>
				<option value="18:00">18:00</option>
				<option value="18:30">18:30</option>
				<option value="19:00">19:00</option>
				<option value="19:30">19:30</option>
				<option value="20:00">20:00</option>
				<option value="20:30">20:30</option>
				<option value="21:00">21:00</option>
				<option value="21:30">21:30</option>
				<option value="22:00">22:00</option>
				<option value="22:30">22:30</option>
				<option value="23:00">23:00</option>
				<option value="23:30">23:30</option>
			</select> 
		</div>
	</div>
</div>
答案

使用[]而不是{{}};小胡子({{}})用于文本插值,it cannot be used inside HTML attributes,你需要使用javascript表达式:

v-model="rowsels.days[index].start"
v-model="rowsels.days[index].end"

以上是关于如何在v-model中使用vue.js在多维json中使用动态密钥?的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 如何在 v-model 输入的数组中定位具有未知名称的对象

如何在 Vue js 的 v-for 循环中使用 v-model

如何使用 v-model 和 v-if 使用 Vue.js 构建一个简单的计算器?

Vue.js 如何使用 v-model 和计算属性以及复选框来镜像输入字段

Vue.js 范围滑块,设置 v-model 并获取更改

Vue.js 文本输入不显示 v-model 的值