VueJs中的el-dialog的坑[1]

VueJs中的el-dialog的坑[1]

  • 需要实现的功能
    • 1.直接从页面A到页面C
    • 2.从页面A到页面B
    • 3.再从页面B跳转到页面C

需要实现的功能

假设有三个页面A,B和页面C,我们有这样一个需求,可以从页面A直接带参数传给页面C,还需满足一定条件,先从A传到B,然后再从B到C(这里的B和C都是对话框,并且弹出C时,需要将B给隐藏掉)
页面A的名字叫:con_apply_tz.vue
页面B的名字叫:con_apply_ywht.vue
页面C的名字叫:con_tree.vue

1.直接从页面A到页面C

就直接通过 Vue 的父子传参的方式,没有什么可以说的:
页面A:




页面A 的js代码


页面C
定义一个 接受父页面传过来参数的属性对象 paramsInfo
这里需要注意的一点是必须要将props属性定义在components 之下

    props:{
      paramsInfo: {//接收父组件传递过来的参数 

      },
    },

然后在页面上面调用

    created() {

      console.log("this.paramsInfo is "+JSON.stringify(this.paramsInfo))
      this.dialogVisible = this.paramsInfo.conTreeVisiable
      console.log("this.dialogVisible----------->"+this.paramsInfo.conTreeVisiable)
      param=this.paramsInfo
      console.log(JSON.stringify(param))

      this.initData(param)
    },

其中需要说明的事情是,页面C本身就是一个el-dialog对象,并且通过dialogVisible来控制页面C这个dialog显示与否


2.从页面A到页面B

页面B的核心代码:


页面B的Js代码

    props: {

      paramsConApplyTz:{ //用于接受父组件页面A con_apply_tz.vue传来的参数
        //con_apply_tz传递过来的参数放在这里
      }
    },


    data() {
      return {
        paramsInfo:{//使用父子传参的方式传递参数,父组件向子组件传递多个参数
          
        },

        isShowYWHT:false,
        }
    },
    created(){
    
      let param =this.paramsConApplyTz
      this.isShowYWHT=this.paramsConApplyTz.isShowYWHT //通过这行代码可以控制页面B的显示与否
      console.log("页面跳转成功:"+JSON.stringify(param))
    },


3.再从页面B跳转到页面C

这里的步骤需要说明一下,是通过页面B,create()这个方法被调用完成之后,通过页面A上的回调函数openConTree(),这个函数做了两件事:1.将页面B给关闭,通过将isShowYWHT 这个值设置为false可以做到。 2.将参数传给页面C,参数param中包含了页面C中是否控制显示的变量 conTreeVisiable,通过将这个变量设置为true,既能够实现页面跳转,同时也可以将 参数传递给子页面C

页面A上的回调函数:

      openConTree(param){
        console.log("[openConTree] invoke..."+JSON.stringify(param))
        this.paramsConApplyTz.isShowYWHT=false;
        this.paramsInfo=param;
      }

页面B的相关业务逻辑

      create(row) { 

       createConInfo(row).then(response1 => {
          let res = response1.data

          if(res.msg!=''&&res.msg!=null){
            alert(res.msg)
            return false
          }

          console.log("con_tree visiable "+JSON.stringify(this.paramsConApplyTz))
          this.paramsInfo={
            conTreeVisiable:true,
            contractId:res.conInfo.contractId,
            contractType:'02',
            amountDetailId:row.amountDetailId,
            proFlag:'1',
            processInstId:res.processInstId
          }

          console.log("con_tree visiable2 "+JSON.stringify(this.paramsInfo))
          console.log("创建完成,调用父页面中的回调函数openConTree....")
          this.$emit('openConTree',this.paramsInfo);
 
        }).catch((error) => {
    
          console.log(error)
        })



      },

你可能感兴趣的:(java,脚本,js,vue2.x,vueJs,java,SE&java,EE&架构)