面试题答案
一键面试实现思路
- 在Vue组件中定义数据属性来存储规格数据和用户选择结果。
- 通过
created
钩子函数调用异步接口获取规格数据。 - 为每个规格选项绑定点击事件,在事件处理函数中更新选择结果数组。
- 在模板中通过
v-for
指令展示规格和选项,并根据选择结果动态更新样式以表示选中状态。
关键代码
<template>
<div>
<div v-for="(spec, index) in specs" :key="index">
<p>{{spec.name}}</p>
<div v-for="(option, optIndex) in spec.options" :key="optIndex"
:class="{ 'selected': selectedOptions.includes(option) }"
@click="selectOption(option)">
{{option}}
</div>
</div>
<p>选择结果: {{ selectedOptions }}</p>
</div>
</template>
<script>
export default {
data() {
return {
specs: [],
selectedOptions: []
};
},
created() {
this.fetchSpecs();
},
methods: {
async fetchSpecs() {
// 假设这里通过axios获取数据
const response = await axios.get('/api/specs');
this.specs = response.data;
},
selectOption(option) {
if (this.selectedOptions.includes(option)) {
this.selectedOptions = this.selectedOptions.filter(opt => opt!== option);
} else {
this.selectedOptions.push(option);
}
}
}
};
</script>
<style scoped>
.selected {
color: blue;
text-decoration: underline;
}
</style>
上述代码中,通过fetchSpecs
方法获取规格数据,selectOption
方法处理用户选择,模板中通过v-for
展示规格和选项,并通过class
绑定显示选中状态,最后展示选择结果数组。