路由初体验02

1. 路由参数

1.1  给路由添加参数的方法 :参数名 (方法名可以自定义)。

在HTML中获取路由的参数使用:$route.params.参数名;在JS中获取路由参数通过 this.$route.params.参数名

实例代码如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7   <title>路由初体验</title>
 8   <script src="./js/vue2.js"></script>
 9   <script src="./js/vue-router-3.0.1.js"></script>
10 </head>
11 <body>
12   <div id="app">
13     <ul>
14       <li><router-link to="/index">首页</router-link></li>
15       <!-- 1. 因为一下三个选项应用用一个组件product,为了便于区分,为每一项加一个参数,分别为 11 22 33 -->
16       <li><router-link to="/product/11">水果</router-link></li>
17       <li><router-link to="/product/22">蔬菜</router-link></li>
18       <li><router-link to="/product/33">肉类</router-link></li>
19     </ul>
20     <router-view></router-view>
21   </div>
22   <script>
23     var index = Vue.component(‘index‘, {
24       template: ‘<div>首页</div>‘
25     })
26     var product = Vue.component(‘product‘, {   //3. 在HTML中获取路由的参数使用:$route.params.参数名
27       template: `
28         <div> 这里显示产品的编号{{$route.params.id}}</div>
29       `,
30       mounted(){
31         //4. 在JS中获取路由参数通过 this.$route.params.参数名
32         console.log(this.$route.params.id)
33       }
34     })
35     var router = new VueRouter({
36       routes: [
37         {name: ‘index‘, path:‘/index‘, component: index},
38         //2. 给路由添加参数的方法  :参数名(参数名可以自定义,此处定义为id)
39         {name: ‘product‘, path:‘/product/:id‘, component: product}
40       ]
41     })
42     var vm = new Vue({
43       el: ‘#app‘,
44       router: router,
45       data: {
46
47       }
48     })
49   </script>
50 </body>
51 </html>

1.2 页面效果:

1.3  添加和获取 路由参数

给路由添加参数的方法 :参数名

 {name: ‘product‘, path:‘/product/:id‘, component: product}

  

在HTML中获取路由的参数使用:$route.params.参数名

      template: `
        <div> 这里显示产品的编号{{$route.params.id}}</div>
      `, 

在JS中获取路由参数通过 this.$route.params.参数名

mounted(){
        //4. 在JS中获取路由参数通过 this.$route.params.参数名
        console.log(this.$route.params.id)
      }

获取参数页面:

2. 监听路由参数的变化

组件复用时,相对路由参数的变化做出相应的话,可以通过 watch (检测变化)$route 对象。

      $route 对象有两个参数,to和 from,to表示将要去的路由对象 from表示从哪个路由对象来

实例代码:

watch: {
          // 这里的to表示将要去的路由对象  from表示从哪个路由对象来
        ‘$route‘(to, from){
          console.log(to);
          console.log(from);
          if(to.params.id === ‘11‘){
            this.allProducts = ‘苹果、香蕉、桃子。。。。。。‘
          }else if (to.params.id === ‘22‘){
            this.allProducts = ‘白菜、青椒、胡萝卜。。。。。。‘
          }else {
            this.allProducts = ‘猪肉、羊肉、牛肉。。。。。。‘
          }
        }
      }

  页面效果:

3. 嵌套路由和编程式导航

嵌套路由步骤:   1. 路由的嵌套通过 children 属性来创建,它也是一个数组,数组里面包含对象。每一个对象是一条路由规则

2. 创建子路由中的组件

3. 为创建好的子路由组件挖坑,使用router-view。 点击按钮显示router-view中的内容(编程式导航)

4. 通过$router来实现跳转,跳转到名为 name 值得路由规则的地方

示例如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7   <title>路由初体验</title>
 8   <script src="./js/vue2.js"></script>
 9   <script src="./js/vue-router-3.0.1.js"></script>
10 </head>
11 <body>
12   <div id="app">
13     <ul>
14       <li><router-link to="/index">首页</router-link></li>
15       <li><router-link to="/product/11">水果</router-link></li>
16       <li><router-link to="/product/22">蔬菜</router-link></li>
17       <li><router-link to="/product/33">肉类</router-link></li>
18     </ul>
19     <router-view></router-view>
20   </div>
21   <script>
22     var index = Vue.component(‘index‘, {
23       template: ‘<div>首页</div>‘
24     })
25     //2. 创建子路由中的组件
26     var bookM = Vue.component(‘bookM‘, {
27       template: ‘<div>这里是详细的菜单,请查看</div>‘
28     })
29     var product = Vue.component(‘product‘, {
30       //3. 为创建好的子路由组件挖坑,使用router-view。    点击按钮显示router-view中的内容(编程式导航)
31       template: `
32         <div>
33           这里显示产品的编号{{$route.params.id}}
34           <h3>{{allProducts}}<button @click="checkM">点击按钮查看</button></h3>
35           <router-view></router-view>
36         </div>
37       `,
38       data(){
39         return {
40           allProducts: ‘‘
41         }
42       },
43       methods: {
44         checkM(){
45           //4. 通过$router来实现跳转,跳转到名为 name 值得路由规则的地方
46           this.$router.push({name: ‘bookM‘})
47         }
48       },
49       mounted(){
50         console.log(this.$route.params.id)
51       },
52       watch: {
53         ‘$route‘(to, from){
54           console.log(to);
55           console.log(from);
56           if(to.params.id === ‘11‘){
57             this.allProducts = ‘苹果、香蕉、桃子。。。。。。‘
58           }else if (to.params.id === ‘22‘){
59             this.allProducts = ‘白菜、青椒、胡萝卜。。。。。。‘
60           }else {
61             this.allProducts = ‘猪肉、羊肉、牛肉。。。。。。‘
62           }
63         }
64       }
65     })
66     var router = new VueRouter({
67       routes: [
68         {name: ‘index‘, path:‘/index‘, component: index},
69         //1. 路由的嵌套通过children属性来创建,它也是一个数组,数组里面包含对象。每一个对象是一条路由规则
70         {name: ‘product‘, path:‘/product/:id‘, component: product,
71           children: [  //注意:子路由的 path 中不能带有 /
72             {name: ‘bookM‘, path: ‘book_path‘, component: bookM}
73           ]
74         }
75       ]
76     })
77     var vm = new Vue({
78       el: ‘#app‘,
79       router: router,
80       data: {
81
82       }
83     })
84   </script>
85 </body>
86 </html>

页面显示:

4. 路由重定向

重定向也在 routes 配置中完成。通过 redirect 来实现。例如要重定向/a/b

var router = new VueRouter({
  routes: [
    { path: ‘/a‘, redirect: ‘/b‘ }
  ]
})

  重定向也可以定位到命名路线:

var router = new VueRouter({
  routes: [
    { path: ‘/a‘, redirect: { name: ‘foo‘ }}
  ]
})

  甚至使用函数进行动态重定向:

var router = new VueRouter({
  routes: [
    { path: ‘/a‘, redirect: to => {
      // the function receives the target route as the argument
      // return redirect path/location here.
    }}
  ]
})

  自己的示例:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7   <title>路由初体验</title>
 8   <script src="./js/vue2.js"></script>
 9   <script src="./js/vue-router-3.0.1.js"></script>
10 </head>
11 <body>
12   <div id="app">
13     <ul>
14       <li><router-link to="/index">首页</router-link></li>
15       <li><router-link to="/product/11">水果</router-link></li>
16       <li><router-link to="/product/22">蔬菜</router-link></li>
17       <li><router-link to="/product/33">肉类</router-link></li>
18     </ul>
19     <router-view></router-view>
20   </div>
21   <script>
22     var index = Vue.component(‘index‘, {
23       template: ‘<div>首页</div>‘
24     })
25     var bookM = Vue.component(‘bookM‘, {
26       template: ‘<div>这里是详细的菜单,请查看</div>‘
27     })
28     var product = Vue.component(‘product‘, {
29       template: `
30         <div>
31           这里显示产品的编号{{$route.params.id}}
32           <h3>{{allProducts}}<button @click="checkM">点击按钮查看</button></h3>
33           <router-view></router-view>
34         </div>
35       `,
36       data(){
37         return {
38           allProducts: ‘‘
39         }
40       },
41       methods: {
42         checkM(){
43           this.$router.push({name: ‘bookM‘})
44         }
45       },
46       mounted(){
47         console.log(this.$route.params.id)
48       },
49       watch: {
50         ‘$route‘(to, from){
51           console.log(to);
52           console.log(from);
53           if(to.params.id === ‘11‘){
54             this.allProducts = ‘苹果、香蕉、桃子。。。。。。‘
55           }else if (to.params.id === ‘22‘){
56             this.allProducts = ‘白菜、青椒、胡萝卜。。。。。。‘
57           }else {
58             this.allProducts = ‘猪肉、羊肉、牛肉。。。。。。‘
59           }
60         }
61       }
62     })
63     var router = new VueRouter({
64       routes: [
65         {name: ‘index‘, path:‘/index‘, component: index},
66         {name: ‘product‘, path:‘/product/:id‘, component: product,
67           children: [
68             {name: ‘bookM‘, path: ‘book_path‘, component: bookM}
69           ]
70         },
71         //路由重定向  这里的 path: ‘*‘ 意思是除了上述定义的路径之外,输入任何其他的路径,都默认切换到index
72         {name: ‘default‘, path: ‘*‘, redirect: ‘/index‘}
73         // {name: ‘default‘, path: ‘*‘, redirect: {name: ‘/index‘}}  或者这种方法
74       ]
75     })
76     var vm = new Vue({
77       el: ‘#app‘,
78       router: router,
79       data: {
80
81       }
82     })
83   </script>
84 </body>
85 </html>

页面效果:    地址栏无论输入任何错误地址  都默认会首页页面  这就是重定向

         

原文地址:https://www.cnblogs.com/lirun-rainbow/p/10357658.html

时间: 2024-10-12 17:40:24

路由初体验02的相关文章

scala初体验-02

上一节,我们讲了scala的安装的即一些初步方法,今天,我们来介绍一下scala里面的一些基本操作 1.对于map的的编写,这个是广泛用于Array里面的 val arr = Array(1,2,3,4,5) arr.map(_*2),则arr的数组中的每一项都*2 2.对于从0-9找出偶数 val arr = Array(1,2,3,4,5,6,7,8,9) 第一种:arr.filter(x=>x%2==0) 第二种:arr.filter(_%2==0) 第三种:arr.filter(_%2=

百度EChart3初体验

由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详细.大家可以去看下.大概了解下用法就OK. 百度ECharts 3:http://echarts.baidu.com/index.html 其实还有很多,可以到官网中找. 下面是我进行操作的步奏,大家可以看下,做个参考. ECharts初体验—01... 需要到官网下载最新的版本的js文件(完整版)

AngularJS路由系列(3)-- UI-Router初体验

本系列探寻AngularJS的路由机制,在WebStorm下开发. AngularJS路由系列包括: 1.AngularJS路由系列(1)--基本路由配置2.AngularJS路由系列(2)--刷新.查看路由,路由事件和URL格式,获取路由参数,路由的Resolve3.AngularJS路由系列(3)-- UI-Router初体验4.AngularJS路由系列(4)-- UI-Router的$state服务.路由事件.获取路由参数5.AngularJS路由系列(5)-- UI-Router的路由

树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED

开题:[好东西,值得研究!] 标题:树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED [知识普及] 1,树莓派各版本对比: 2,树莓派2代BModel 主板,图样 树莓派2 代B GPIO 图 [所需硬件] 一张TF卡,8G或者8G以上,我的是 [三星TF卡16g class10 EVO] 一根网线,让树莓派与路由器连接 一个5V 500MA 的普通USB电源,为树莓派供电 ,我试过了,5V 500ma没问题 一个树莓派2代B 一个普通路由器[如果你连路由

1Python全栈之路系列之Django初体验

Python全栈之路系列之Django初体验 Django不得不说在Python中是一个非常强大的全栈框架,而且入门也比较简单,只要你学完了基本的Django知识,接着再做一两个项目,不大不小就成,然后你再去学其它的框架你会发现,在那些小而美的框架中,你学起来将非常的快,因为你在学习Django的时候就已经学习并且体验过了Web开发流程,所以会有这么一个现象出现,有些新手朋友在学习Flask.Tornado等小而美的框架时,很多概念不是很理解,比如ORM.路由等,但你学Django就不会出现这种

Xamarin.iOS开发初体验

Xamarin是一个跨平台开发框架,这一框架的特点是支持用C#开发IOS.Android.Windows Phone和Mac应用,这套框架底层是用Mono实现的. Mono是一款基于.NET框架的开源工程,包含C#语言编译器.CLR运行时和一组类库,能运行于Windows.Linux.Unix.Mac OS和Solaris.对于.NET程序员来说,Xamarin是走向安卓.iOS.Mac跨平台开发的神器,不仅能用熟悉的C#来开发,还能使用Visual Studio作为IDE.本文内容是Xamar

初探go-golang语言初体验

2017/2/24 一.初体验 1.环境 wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz cat <<'_EOF' >>/etc/profile #golang export PATH=$PATH:/usr/local/go/bin export GOPATH=/opt/go _EOF source 

Shell脚本编程初体验

Shell脚本编程初体验 分类 编程技术 通 常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机 交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但 这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并 且自动

elmah - Error Logging Modules and Handlers for ASP.NET - 1 : 初体验

elmah(英文):https://code.google.com/p/elmah/ 写作思路:先看结果,然后再说原理 elmah文章基本内容如下 1.安装 2.基本使用 3.详细配置讲解 简介 ELMAH是一个开源项目,其目的是记录和报告在ASP.NET Web应用程序未处理的异常. 早在2004年9月与Atif阿齐兹和斯科特·米切尔发表在MSDN Library,其目的是作为一个概念证明,编写自包含的功能与ASP.NET HTTP模块和处理程序是绝对有可能的,大多有这种特征可能是一篇文章插入