溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue實(shí)現(xiàn)路由監(jiān)聽和參數(shù)監(jiān)聽

發(fā)布時(shí)間:2020-10-22 16:14:31 來源:腳本之家 閱讀:215 作者:zhusf 欄目:web開發(fā)

1、路由攜帶數(shù)據(jù)跳轉(zhuǎn)

routerAction(hideDisplays, data) {
  switch (hideDisplays) {
    case "pubAccountMenu":
      this.$router.push({
        name: "AppAccountInfo",
      });
    break;
    //在菜單路由上存儲(chǔ)各種需要信息
    case "publicDocInfoMenu": //菜單code: publicDocInfoMenu
      data.instanceInfo.active = 4 //標(biāo)記已點(diǎn)擊的標(biāo)簽頁(yè)
      data.instanceInfo.fromMenu = true
      data.instanceInfo.editOrAdd = false;
      this.getUcMenuInfo(data.instanceInfo) //數(shù)據(jù)、對(duì)象等
      this.$router.push({
        name: "DocumentInfoMaint",
        params: {
          instanceInfo: data.instanceInfo,
          uuid: data.uuid,
          breadCrumb: data.instanceInfo.name,
          breadCrumbEn: En_Name,
          prefix: 'text.breadCrumb.MyUseCase', //面包屑信息
          prefixPath: '/MyApplications',
          breadPath: '/AppInfo/' + data.uuid,
          routeName:'AppInfo',
          prefixRouteName:'MyApplications',
          firstRoute:true
        }
      });
    break;
  }
}

2、路由監(jiān)聽

watch: {
 $route: function (to, from) {

  if (this.$route.params.instanceInfo) {
   // let data = JSON.parse(this.$route.params.instanceInfo);
   let isObject = this.$route.params.instanceInfo; //獲取路由傳過來的數(shù)據(jù)
   //判斷數(shù)據(jù)是否為對(duì)象,如果不是,則解析并獲取數(shù)據(jù)
   let data = isObject instanceof Object ? this.$route.params.instanceInfo : JSON.parse(this.$route.params.instanceInfo);
   this.currentProductId = data.uuid;
   this.solutionUuid = data.uuid;
   this.setValue(data)
   localStorage.setItem('SolutionInfo', JSON.stringify(data));
  } else if (localStorage.getItem("SolutionInfo")) {//在瀏覽器的本地存儲(chǔ)中獲取數(shù)據(jù)
   //一般數(shù)據(jù)在瀏覽器的本地存儲(chǔ)中會(huì)以JOSN字符串的方式存儲(chǔ),所以要把數(shù)據(jù)轉(zhuǎn)換成JSON對(duì)象來使用
   let data = JSON.parse(localStorage.getItem("SolutionInfo"));
   this.currentProductId = data.uuid;
   this.solutionUuid = data.uuid;
   this.setValue(data)
  }

 }
}

3、值監(jiān)聽

頁(yè)面A:
  //定義要監(jiān)聽的對(duì)象
  <vm-register-table :param="param" :child-open-table="jumpOrDialog" />

  例如監(jiān)聽param:
  (1).若param為對(duì)象,則需要把它轉(zhuǎn)換成JSON字符串
  let tenantParam = {
    tenantId:tenantId,
    isTerminals: this.jumpOrDialog.isTerminals
  }
  this.param = JSON.stringify(tenantParam);
  (2).若param為字符串,則不用做任何轉(zhuǎn)換
  this.param = currentPage;

頁(yè)面B:
  //1.注冊(cè)監(jiān)聽對(duì)象
  props: ['childOpenTable','param'],
  
  //2.監(jiān)聽
  (1).
  watch:{
    param:function(oldValue){
      console.log("newValue++"+oldValue)
      let jumpOrDialog = JSON.parse(oldValue)
      console.log("jumpOrDialog==++"+jumpOrDialog)
      let isTerminal = jumpOrDialog.isTerminals 
      if(isTerminal){
        this.tenantId = jumpOrDialog.tenantId;
      }else{
        let userInfo = JSON.parse(localStorage.getItem("userInfo"))
        this.tenantId = userInfo.tenantId;
      }
      let vmData = {
        tenantId: this.tenantId,
        pageNum: this.pageNum,
        pageSize: this.pageSize
      }
      this.getAllVmRegister(vmData); 
    }
  },  
  (2).
  watch:{
     param:function(oldValue){
       let pages = JSON.parse(oldValue)
       this.currentPage = pages;
     }
   }

以上這篇vue實(shí)現(xiàn)路由監(jiān)聽和參數(shù)監(jiān)聽就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI