1. 程式人生 > >【前端小小白的學習之路】vue學習記錄④(路由傳參)

【前端小小白的學習之路】vue學習記錄④(路由傳參)

emp 分享 exp pat vuejs 小白 one -1 limit

通過上篇文章對路由的工作原理有了基本的了解,現在我們一起來學習路由是如何傳遞參數的,也就是帶參數的跳轉。

帶參數的跳轉,一般是兩種方式:

①.a標簽直接跳轉。

②點擊按鈕,觸發函數跳轉。

在上篇文章中我們已經有兩個頁面(Helloworld.vue&Hello.vue),現在我準備往Hello.vue裏面添加3個鏈接,分別對應兩種情況的跳轉。

第一步:在原來的Hello.vue裏添加路由鏈接跳轉的代碼(見第38-44行代碼),添加後的Hello.vue代碼如下:

 1 <template>
 2   <div class="hello">
 3
<h1>{{ msg }}</h1> 4 <h2>Essential Links</h2> 5 <ul> 6 <li> 7 <a href="https://vuejs.org" target="_blank">Core Docs</a> 8 </li> 9 <li> 10 <a href="https://forum.vuejs.org" target="_blank">Forum</a> 11
</li> 12 <li> 13 <a href="https://chat.vuejs.org" target="_blank">Community Chat</a> 14 </li> 15 <li> 16 <a href="https://twitter.com/vuejs" target="_blank">Twitter</a> 17 </li> 18 <br> 19 <li> 20
<a href="http://vuejs-templates.github.io/webpack/" target="_blank">Docs for This Template</a> 21 </li> 22 </ul> 23 <h2>Ecosystem</h2> 24 <ul> 25 <li> 26 <a href="http://router.vuejs.org/" target="_blank">vue-router</a> 27 </li> 28 <li> 29 <a href="http://vuex.vuejs.org/" target="_blank">vuex</a> 30 </li> 31 <li> 32 <a href="http://vue-loader.vuejs.org/" target="_blank">vue-loader</a> 33 </li> 34 <li> 35 <a href="https://github.com/vuejs/awesome-vue" target="_blank">awesome-vue</a> 36 </li> 37 </ul> 38 <div> 39 <router-link :to="{path:‘/helloworld/123‘}">參數傳遞1</router-link> 40 <br> 41 <router-link :to="{path:‘/helloworld/789‘,query:{userid:9527,name:‘Tom_Lo‘}}">參數傳遞2</router-link> 42 <br> 43 <button @click="toNewpage">點擊跳轉</button> 44 </div> 45 </div> 46 </template> 47 48 <script> 49 export default { 50 name: ‘hello‘, 51 data() { 52 return { 53 msg: ‘Welcome to Your Vue.js App‘ 54 } 55 }, 56 methods: { 57 toNewpage: function() { 58 59 this.$router.push({ path: ‘/helloworld/999‘, query: { userid: 128, name: ‘Tom‘ } }); 60 } 61 } 62 } 63 </script> 64 65 <!-- Add "scoped" attribute to limit CSS to this component only --> 66 <style scoped> 67 h1, 68 h2 { 69 font-weight: normal; 70 } 71 72 ul { 73 list-style-type: none; 74 padding: 0; 75 } 76 77 li { 78 display: inline-block; 79 margin: 0 10px; 80 } 81 82 a { 83 color: #42b983; 84 } 85 </style>

第38-44行代碼的路由鏈接跳轉寫法是固定的,記住會用就好了。

第二步:Hello.vue傳遞了參數,那麽我們就用Helloworld.vue接收參數。見更新後的Helloworld.vue代碼:

 1 <!--模板部分-->
 2 <template>
 3   <div class="container">
 4     <h1>hello,world!</h1>
 5     <p>{{test}}</p>
 6     <p>接收的參數id:
 7       <span class="hint">{{id}}</span>
 8     </p>
 9     <p>接收的參數userid:
10       <span class="hint">{{userid}}</span>
11     </p>
12     <p>接收的參數name:
13       <span class="hint">{{username}}</span>
14     </p>
15   </div>
16 </template>
17 <!--js部分-->
18 <script>
19 export default {
20   name: ‘helloworld‘,
21   data() {
22     return {
23       test: ‘this is a test‘,
24       id: this.$route.params.id,//接收參數
25       userid: this.$route.query.userid,
26       username: this.$route.query.name
27     }
28   }
29 }
30 </script>
31 <!--樣式部分-->
32 <style>
33 .container {
34   background: #aaa;
35   color: blue;
36 }
37 </style>

上面的第6-14行就是接收參數的容器。

註意:Hello.vue中的$router是用來傳遞參數的,而Helloworld.vue中的$route是用來接收參數的。

第三步:路由變化了,當然還得在index.js裏面體現(見第16行),見更新後的index.js代碼:

 1 import Vue from ‘vue‘
 2 import Router from ‘vue-router‘
 3 import Hello from ‘@/components/Hello‘
 4 import HelloWorld from ‘@/components/Helloworld‘//我們新定義的組件
 5 
 6 Vue.use(Router)
 7 
 8 export default new Router({
 9   routes: [
10     {
11       path: ‘/‘,
12       name: ‘Hello‘,
13       component: Hello
14     },
15     {//新路由
16       path: ‘/helloworld/:id‘,
17       name: ‘HelloWorld‘,
18       component: HelloWorld
19     }
20   ]
21 })

第四步:入口文件App.vue不用動。路由定義、發送參數、接收參數都具備了,下面咱們就跑一下試試吧~~

運行跳轉成功後如下圖:

技術分享

通過圖示我們看到,參數都可以正常拿到了。

同時註意url的變化。首先url是有個#號,這個就代表是單頁面的路由(hash模式);然後我們的參數實際都是放在url上傳輸的,要註意別超出url的長度範圍。

【前端小小白的學習之路】vue學習記錄④(路由傳參)