路由vue select v-mode 绑定的路由传递的ID,显示对应映射中文,页面刷新,select只显示数字
时间: 2023-12-02 12:03:38 浏览: 38
你的问题描述有些含糊,但我理解你的意思是:在 Vue.js 中,使用路由传递 ID,在页面刷新后,Vue Select 组件只能显示数字,而不是对应的中文。
这个问题的原因可能是因为,在页面刷新后,Vue 组件会重新渲染,但是没有保存之前的状态。因此,你需要在 Vue 组件中保存之前的状态,以便在页面刷新后恢复。
具体实现方式有多种,以下是其中一种可能的方案:
1. 在组件的 data 中添加一个 selected 属性,用于保存当前选中的选项。
2. 在组件的 created 钩子中,检查路由参数是否包含一个名为 id 的参数。如果有,将其保存到 selected 属性中。
3. 在组件的 mounted 钩子中,使用 selected 属性初始化 Vue Select 组件的 v-model。
4. 在组件的 watch 钩子中,监听路由参数的变化。如果路由参数发生变化,将新的 id 值保存到 selected 属性中,并重新加载对应的选项。
下面是一个示例代码:
```
<template>
<div>
<select v-model="selected">
<option v-for="option in options" :value="option.value">{{ option.label }}</option>
</select>
</div>
</template>
<script>
export default {
data() {
return {
selected: null,
options: [
{ value: 1, label: '选项一' },
{ value: 2, label: '选项二' },
{ value: 3, label: '选项三' },
],
};
},
created() {
if (this.$route.params.id) {
this.selected = parseInt(this.$route.params.id, 10);
}
},
mounted() {
if (this.selected) {
this.$refs.select.value = this.selected;
}
},
watch: {
'$route.params.id'(newValue) {
if (newValue) {
this.selected = parseInt(newValue, 10);
this.$refs.select.value = this.selected;
}
},
},
};
</script>
```
在上面的代码中,我们通过使用 watch 监听路由参数的变化,以及在 created 和 mounted 钩子中保存和初始化选中的选项,来解决了 Vue Select 组件在页面刷新后只显示数字的问题。