【发布时间】:2021-02-07 06:51:28
【问题描述】:
您好,我正在尝试在选择其中一个选项时设置一个值。文本输入只会在选择选项时显示,并且数组 user.roles 中的值应该填充到输入文本中,但由于某种原因,我无法弄清楚为什么不起作用。任何帮助将不胜感激。
new Vue({
el: '#app',
data: {
user: {
email: 'test@test.com',
roles: [{id: 1, name:'Client', value:'this is just a value'}]
},
roles: [
{
id: 1,
name: 'Client',
value:'',
},
{
id: 2,
name: 'Admin',
value:'',
},
{
id: 3,
name: 'Guest',
value:'',
}
]
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<template>
<label>Email</label>
<input type="text" v-model="user.email" />
</div>
<div v-for="(role,index) in roles" :key="role.id">
<label>{{role.name}}</label>
<input type="checkbox" v-model="user.roles" :value="role"/>
<p v-if="user.roles.filter(e => e.id === role.id).length > 0">
<input type="text" value="The value from user.roles should go here.... instead of the value of role.value">
</p>
</div>
<p>User's selected roels</p>
{{user.roles}}
</template>
</div>
【问题讨论】:
-
如果
filter用于判断存在,则find应该用于获取值。value="user.roles.find(e => e.id === role.id).value" -
嘿@Ohgodwhy,感谢您的建议,您提出的建议似乎有效,但是在我这样做之后,复选框不再保持选中状态。
标签: javascript vue.js