• element ui框架(路由参数传递)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            前端开发中,有的时候路由也是需要带参数传递的。不管是窗口登录,还是超链接,一般会带1个或者多个参数。如果是多个参数,通常就用分隔符把它们连接在一起。vue工程下面的参数传递一般是这么解决的,

    1、非props传递,

    1.1 首先需要在router/index.js中添加传递参数

    1. export default new Router({
    2. routes: [
    3. {
    4. path: '/',
    5. name: 'HelloWorld',
    6. component: HelloWorld
    7. },
    8. {
    9. path: '/Login',
    10. name: 'Login',
    11. component: Login
    12. },
    13. {
    14. path: '/Main',
    15. name: 'Main',
    16. component: Main,
    17. children :[
    18. {
    19. path: '/Member/Level/:id', //id为需要传递的参数
    20. name:'MemberLevel',
    21. component: MemberLevel,
    22. },
    23. {
    24. path: '/Member/List',
    25. name:'MemberList',
    26. component: MemberList,
    27. }
    28. ]
    29. }
    30. ]
    31. })

            如上面一段中文说明,这个时候只需要把参数用冒号割开即可。

    1.2 在Main.vue中添加超链接,

            如果是比较简单的办法,直接拼接url即可,比如像这样,

    <router-link to="/Member/Level/1">会员等级</router-link>

            另外一种方法就是把to看成是一个json对象,这也是可以的,

    <router-link :to="{name:'MemberLevel', params:{'id':1}}">会员等级</router-link>

    1.3 有了上面的铺垫,那么MemberLevel.vue中使用id就很简单了

    <div>会员等级==={{this.$route.params.id	}}</div>

    2、props传递

    2.1 props传递,关键之处在于在router/index.js添加一个props属性

    1. export default new Router({
    2. routes: [
    3. {
    4. path: '/',
    5. name: 'HelloWorld',
    6. component: HelloWorld
    7. },
    8. {
    9. path: '/Login',
    10. name: 'Login',
    11. component: Login
    12. },
    13. {
    14. path: '/Main',
    15. name: 'Main',
    16. component: Main,
    17. children :[
    18. {
    19. path: '/Member/Level/:id', //id为需要传递的参数
    20. name:'MemberLevel',
    21. component: MemberLevel,
    22. props:true // 添加props属性
    23. },
    24. {
    25. path: '/Member/List',
    26. name:'MemberList',
    27. component: MemberList,
    28. }
    29. ]
    30. }
    31. ]
    32. })

            和1.1相比较,这里多了props属性,并且设置为true。

    2.2 Main.vue中添加超链接

            这部分和1.2是一样的,不再赘述。

    2.3 修改MemberLevel.vue

    1. <template>
    2. <div>会员等级==={{id}}</div>
    3. </template>
    4. <script>
    5. export default {
    6. props:["id"],
    7. name:"MemberLevel"
    8. }
    9. </script>
    10. <style>
    11. </style>

            和router中的index.js一样,在MemberLevel.vue也得添加一个props属性,这样div中就可以直接引用id这个变量了。

    3、Login.vue和Main.vue之间的传递

            一般Login之后,都需要把相关传递信息传给Main网页。这个时候就可以用上面1或者2的方法来完成参数传递。不失一般性,可以用非props方法来传递,

     3.1 重新配置router/index.js路由

    1. {
    2. path: '/Main/:name', //name为需要传递的参数
    3. name: 'Main',
    4. component: Main,
    5. children :[
    6. {
    7. path: '/Member/Level/:id', //id为需要传递的参数
    8. name:'MemberLevel',
    9. component: MemberLevel,
    10. props:true // 添加props属性
    11. },
    12. {
    13. path: '/Member/List',
    14. name:'MemberList',
    15. component: MemberList,
    16. }
    17. ]
    18. }

    3.2 修改submitForm函数

    1. submitForm(formName) {
    2. //alert('submit!');
    3. this.$refs[formName].validate((valid) => {
    4. if (valid) {
    5. this.$router.push({name:"Main",params:{"name":this.form.name}});
    6. } else {
    7. this.$message.error('请输入正确用户名或密码!');
    8. return false;
    9. }
    10. });
    11. }

    3.3 在Main.vue中引用传递的参数

    <span>{{this.$route.params.name}}span>

    4、总结

            网页之间传参,是数据传递的重要方式,这部分建议好好掌握。当然,传参只是基础,后续还要对参数进行本地化保存,这也是非常重要的。

  • 相关阅读:
    后量子时代,未来密码该何去何从?
    Java Swing猜单词游戏
    【17 > 分布式接口幂等性】2. Update的幂等性原理解析
    小程序生命周期函数
    分布式与一致性协议之CAP(四)
    纯手写http服务器
    干货分享,快来看这两款优质软件
    ES(六)| ES集群搭建、使用cerebro来监控ES集群状态
    掌握 Android 自动化测试框架 UiAutomator & UiAutomator2
    【论文阅读】Multiple Instance Learning with Emerging Novel Class
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/126920205