html代碼
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
</head>
<body>
<div id="app">
<div>
<!-- 靜态路由 -->
<router-link to="/">首頁</router-link>
<router-link to="/about">關于我們</router-link>
<!-- 動态路由 -->
<router-link to="/user/apollo">Apollo</router-link>
<router-link to="/user/jack">Jack</router-link>
<!-- 手動通路和傳參 -->
<button @click="surf">漫遊</button>
</div>
<div>
<!-- 路由視圖 -->
<router-view></router-view>
</div>
</div>
<!-- 注意js導入順序,自己定義的要在下面 -->
<script src="../js/vue.js"></script>
<script src="../js/vue-router.js"></script>
<script src="app.js"></script>
</body>
</html>
js代碼:
var routes = [
// 靜态路由
{
path: '/',
component: {
template: `
<div>
<h1>首頁</h1>
</div>
`,
},
},
// 靜态路由
{
path: '/about',
component: {
template: `
<div>
<h1>關于我們</h1>
</div>
`,
},
},
// 動态路由
{
// 注意是斜杠'/'後面在冒号
path: '/user/:name',
// 路由别名
name:'user',
component: {
template: `
<div>
<!-- 第一種方式:params,動态傳參 -->
<h1>使用者中心:{{ $route.params.name }}</h1>
<!-- 第一種寫法:v-bind綁定, to前面 [需要] 加冒号':' -->
<!--<router-link :to=" '/user/'+$route.params.name+'/more' ">更多資訊</router-link>-->
<!-- 第二種寫法:append追加, to前面 [不要] 加冒号':' -->
<router-link to="more" append>更多資訊</router-link>
<router-view></router-view>
</div>
`,
},
children: [
{
path: 'more',
component: {
template: `
<div>
<h3>使用者中心:{{ $route.params.name }}</h3>
更多内容請點選下方按鈕閱讀......<br>
更多内容請點選下方按鈕閱讀......<br>
更多内容請點選下方按鈕閱讀......<br>
更多内容請點選下方按鈕閱讀......
</div>
`
}
}
]
}
];
// 路由構造
var router = new VueRouter({
routes: routes,
});
// 執行個體
new Vue({
el: '#app',
router: router,
methods:{
// 手動通路和傳參
surf:function () {
setTimeout(
function () {
this.router.push('/about');
setTimeout(function () {
// 寫法1
this.router.push('/user/apollo');
// 寫法2
this.router.push({name:'user',params:{name:'jack',}})
},2000)
},2000)
}
}
});