zoukankan      html  css  js  c++  java
  • vue嵌套路由--params传递参数

    在嵌套路由中,父路由向子路由传值除了query外,还有params,params传值有两种情况,一种是值在url中显示,另一种是值不显示在url中。

    1、显示在url中
    index.html

    <div id="app"> 
      <!-- router-view 路由出口, 路由匹配到的组件将渲染在这里 -->
      <router-view></router-view> 
    </div>

    main.js params传值是通过:[参数值] 如path:"/home/game/:num"

    import Vue from 'vue'
      import VueRouter from 'vue-router'
      Vue.use(VueRouter) 
      //引入两个组件 
      import home from "./home.vue"
      import game from "./game.vue"
      //定义路由 
      const routes = [ 
        { path: "/", redirect: "/home" },//重定向 
        { 
          path: "/home", component: home, 
          children: [ 
            { path: "/home/game/:num", component: game } 
          ] 
        } 
      ] 
      //创建路由实例 
      const router = new VueRouter({routes}) 
    
      new Vue({ 
        el: '#app', 
        data: { 
          id:123, 
        }, 
        methods: { 
        }, 
        router 
      })

    home.vue 在home中具体的值就跟在路径后面,如 “/home/game/123”,也就是说传递给子路由的值就是 123

    <template> 
        <div> 
          <h3>首页</h3> 
          <router-link to="/home/game/123"> 
            <button>显示</button> 
          </router-link> 
          <router-view></router-view> 
        </div> 
      </template>

    game.vue 在子路由中,通过 this.$route.params.参数名来接受传递过来的值

    <template> 
      <h3>王者荣耀{{ this.$route.params.num }}</h3> 
    </template>

    2、不显示在url中,如果在PC端将传递的值显示在url中,这样无形中就存在安全隐患,如果客户不小心修改了url那样就会出错,移动端就无所谓了,如何才能不显示在url中,同样很简单,但是需要给映射的路径起一个别名,通过name来取别名

    同样只需将上面的main.js中的定义路由改为如下样子,在子路由中通过name来给路径其一个game1的别名。

    //定义路由 
      const routes = [ 
        { path: "/", redirect: "/home" },//重定向 
        { 
          path: "/home", component: home, 
          children: [ 
            { name: "game1", path: "/home/game/", component: game } 
          ] 
        } 
      ]

    home.vue 中router-link修改为:to="{ name:'game1', params: {num: 123} }" params中是要传递的参数,这样传递的参数就不会显示在url中 

    <template> 
        <div> 
          <h3>首页</h3> 
          <router-link :to="{ name:'game1', params: {num: 123} }"> 
            <button>显示</button> 
          </router-link> 
          <router-view></router-view> 
        </div> 
      </template>

    原文地址:http://www.jb51.net/article/114436.htm 

  • 相关阅读:
    e870. 获取默认外观的数据
    e867. 获取和设置外观
    e776. 设置JList组件项的提示语
    e775. 设置JList组件项的维数
    e781. 设置JList中的选择模式
    e784. 监听对JList选择变动
    e780. 设置JList中的已选项
    e782. 排列JList中的项
    e779. 获得JList中的已选项
    e777. 获得JList组件的所有项
  • 原文地址:https://www.cnblogs.com/zyl-Tara/p/7693373.html
Copyright © 2011-2022 走看看