vue.js - Vue-Router 在选择选项中不起作用
问题描述
II 尝试从选择选项创建一个简单的导航,但没有结果。
<router-link>
在里面不起作用<select><option>
这是我尝试过的:
Vue
<div>
<select v-model="selected">
<option v-for="orga in organisations" :key="orga.name">
<router-link :to="{name: 'Box', params: {orga: orga.route}}">
{{ orga.name }}
</router-link>
</option>
</select>
</div>
javascript
data() {
return {
selected: this.$route.params.orga,
organisations: [
{ name: "Abc", route: "abc" },
{ name: "Lmn", route: "lmn" },
{ name: "Xyz", route: "xyz" }
]
};
}
解决方案
如果要根据select
选项更改视图,则不能router-link
在选项标签内使用。
但是,您可以通过如下所示的解决方法来实现此目的。在这里,我们将根据select
选项切换视图并更改路线。
Vue.component('compA', {
template: '<div>{{name}}</div>',
data() {
return {
name: 'Component A'
}
}
})
Vue.component('compB', {
template: '<div>{{name}}</div>',
data() {
return {
name: 'Component B'
}
}
})
const routes = [{
path: '/a',
component: {
template: '<compA/>'
}
},
{
path: '/b',
component: {
template: '<compB/>'
}
}
];
const router = new VueRouter({
routes
})
new Vue({
el: "#app",
data() {
return {
selected: ''
}
},
router,
methods: {
routeChange: function(e) {
this.$router.push(e.target.value)
}
}
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<div id="app">
<div>
<select @change="routeChange">
<option></option>
<option v-for="(c, i) in ['a', 'b']" :key="i">
{{ c }}
</option>
</select>
</div>
<router-view/>
</div>
但是这种情况也可以通过动态组件来实现。文档对此进行了更多解释,可用于在组件或动态渲染之间切换。
Vue.component('CompA', {
template: '<div>new component A</div>'
})
Vue.component('CompB', {
template: '<div>new component B</div>'
})
new Vue({
el: "#app",
data() {
return {
value: ""
}
},
template: `
<div>
<select v-model="value">
<option v-for="c in ['compA', 'compB']">{{c}}</option>
</select>
<component :is="value" />
</div>
`
})
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<div id="app"></div>
推荐阅读
- c# - 如何反序列化 TcpClient 对 json 的响应
- mysql - Mysql 触发错误:SQLSTATE[42000]:语法错误或访问冲突:1231 变量 'MESSAGE_TEXT' 不能设置为 'NULL' 的值
- string - 如何编写自己的函数来匹配字符串模式?
- javascript - 如何解决我遇到的 npm 安装问题
- tensorflow - TF 代理:如何在 ActorDistributionNetwork 的层中使用批量标准化
- wordpress - 如何在 wordpress 中翻译自定义分类法
- javascript - React 中的全局 beforeEach 和 afterEach Jest
- javascript - JavaScript如何在值更改时运行函数
- excel - 从 Excel 2013 转换为 2016 时出现 Excel VBA 自动化错误
- pine-script - Pine Script - 如何为某个价格点绘制形状/字符