以下是我的代码。我想使用“select”标签,我想从脚本中呈现选项及其值。我使用“v-bind:value”来渲染脚本中的值。但是有一个错误,如***“
[eslint-plugin-vue] [vue / require-v-for-key]迭代中的元素 期待'v-bind:key'
指令。“***
因此我这样给了**“
< option v-for= "option in nationalityOpt" v-bind:value="option.value" v-bind:key = ""> {{ option.text }} < / option>
“。
如果我从代码中删除了“v-bind:value”,那么我无法在UI中获取选项值。我想纠正“v-bind:key”的错误,我想知道这两者之间的区别。请帮忙。
<template>
<b-card>
<h4 slot="header" class="card-title">Employee</h4>
<b-row>
<b-col sm="3">
<b-form-group>
<label for="name">First Name </label>
<input type="text" id="name" class="form-control" placeholder="Enter your name" v-model="firstName">
</b-form-group>
</b-col>
</b-row>
<b-row>
<b-col sm="3">
<b-form-group>
<label for="name">Nationality</label>
<select name="" id="" class="form-control" placeholder="Nationality" v-model="nationality">
<option v-for="option in nationalityOpt" v-bind:value="option.value"> {{ option.text }} </option>
</select>
</b-form-group>
</b-col>
</b-row>
<input type="submit" value="Submit" @click="validateForm">
</b-card>
</template>
<script>
export default {
name: 'addEmpl',
data () {
return {
firstName: '',
nationality: '1',
nationalityOpt: [
{ value: '1', text: 'Select' },
{ value: 'IN', text: 'Indian'},
{ value: 'OT', text: 'Others'}
],
}
}
}
</script>
提前致谢。
答案 0 :(得分:4)
检查列表渲染的docs,特别是关键字。
在v-for中需要v-bind:key
因为它需要区分呈现的每个组件,以防数据发生变化。您需要使用组件v-bind:key
中的v-bind:value
和option
这两者,才能正常运行。
您可以简化和使用:key
和:value
,例如:
<option v-for="option in nationalityOpt" :value="option.value" :key="option.value">
{{ option.text }}
</option>
答案 1 :(得分:0)
Vue.js有一些通过重用组件来提高渲染效率的方法。要使列表(使用v-for)正确呈现,我们应该提供唯一的:键绑定到每个元素https://vuejs.org/v2/guide/list.html#key
<select name="" id="" class="form-control" placeholder="Nationality" v-model="nationality">
<option v-for="option in nationalityOpt" v-bind:value="option.value" :key="option.value"> {{ option.text }} </option>
</select>