zoukankan      html  css  js  c++  java
  • vuejs几种不同组件(页面)间传值的方式

    在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA中的组件间传值。

    一、路由传值

      路由对象如下图所示:

      

      在跳转页面的时候,在js代码中的操作如下,在标签中使用<router-link>标签

    this.$router.push({
                            name: 'routePage',
                            query/params: {
                                routeParams: params
                            }
                        })
    

     需要注意的是,实用params去传值的时候,在页面刷新时,参数会消失,用query则不会有这个问题。

     这样使用起来很方便,但url会变得很长,而且如果不是使用路由跳转的界面无法使用。

    二、通过$parent,$chlidren等方法调取用层级关系的组件内的数据和方法

      通过下面的方法调用:

    this.$parent.$data.id  //获取父元素data中的id
    this.$children.$data.id  //获取父元素data中的id
    

      这样用起来比较灵活,但是容易造成代码耦合性太强,导致维护困难

    三、通过eventBus传递数据

      使用前可以在全局定义一个eventBus

    window.eventBus = new Vue();
    

      在需要传递参数的组件中,定义一个emit发送需要传递的值,键名可以自己定义(可以为对象)

    eventBus.$emit('eventBusName', id);
    

      在需要接受参数的组件重,用on接受该值(或对象)

    //val即为传递过来的值
    eventBus.$on('eventBusName', function(val) {
      console.log(val)
    })

      最后记住要在beforeDestroy()中关闭这个eventBus

    eventBus.$off('eventBusName');
    

      

      

  • 相关阅读:
    【IDDFS】Power Calculus
    【A*/K短路】 [USACO08MAR]Cow Jogging G
    P1880 [NOI1995]石子合并
    【区间DP】[USACO16OPEN]248 G
    【树上背包】P1273 有线电视网
    【分组背包】[BJOI2019]排兵布阵
    DP学习笔记——背包专题
    【思维/构造】D
    【线段树+扫描线】P5490 【模板】扫描线
    【最小生成树】畅通工程再续 HDU
  • 原文地址:https://www.cnblogs.com/ygtq-island/p/6728137.html
Copyright © 2011-2022 走看看