在vue中優雅地實現簡單頁面逆傳值

来源:http://www.cnblogs.com/buerjj/archive/2017/11/26/7900696.html
-Advertisement-
Play Games

【需求】 要實現的需求很簡單,頁面從A -> B,用戶在B觸發操作,將一些數據帶回到A頁面,在網上找了好久也只看到有人問,但總找不到很好答案。要實現的效果圖如下: 【聯想】 在 ios 開發中,頁面跳轉 A -> B -> C,到 C 頁面後,記憶體中一直存儲著 A 和 B 頁面的數據和狀態,通過導航 ...


【需求】

  要實現的需求很簡單,頁面從A -> B,用戶在B觸發操作,將一些數據帶回到A頁面,在網上找了好久也只看到有人問,但總找不到很好答案。要實現的效果圖如下:

  

 

【聯想】

  在 ios 開發中,頁面跳轉 A -> B -> C,到 C 頁面後,記憶體中一直存儲著 A 和 B 頁面的數據和狀態,通過導航堆棧遍曆數組可以拿到之前的頁面進行修改賦值等,另外還有代理,block傳值等操作。  

  vue是一個單頁應用,輕量,並且不會重覆下載數據。當它從一個頁面跳轉到另一個頁面時,原來的頁面的vue實例和相關數據已經銷毀了,要實現逆傳值就要找到操作的對象及它的一些屬性。

【嘗試】

  在 three 頁面中列印路由相關信息,如下:

  

  本來是想在其對象中查看是否有可操作的對象,但發現都不好操作甚至太麻煩,並不像 ios 中一樣。然後嘗試對其中一些對象 prototype 或 __proto__ 主動添加想要存儲的數據,實際結果也是要麼報錯不通過,要麼路由切換時數據就沒了。

  這兩天又重新看了看vue的官網指導,發現除了全局路由有對應的時機方法,對於組件路由也有幾個對應的鉤子函數。

  

  在第三個頁面中實現 beforeRouteLeave,列印對應的參數發現確實可以拿到前後路由。如下:

  

【相關代碼】

  /three 頁面中的 input 與變數 selVal 綁定,然後在此頁面的路由方法中,判斷如果是回第二個頁面,則將要傳的參數賦值到對應query 或 params中,params 中的數值如果用戶刷新當前頁面參數值會丟失,而query則是拼接在 url 後面,刷新頁面值也不會丟失。如下:

  beforeRouteLeave(to, from, next) {
    if (to.name == 'Two') {
      to.query.temp = this.selVal;
    }
    next();
  }

  在 /two 頁面的 mounted 方法中獲取相應的值

  mounted() {
    if (this.$route.query.temp) {
      this.temp = this.$route.query.temp;
    }
  }

  這樣就完了,真想說句靠,怎麼原來就沒發現呢,之前實現這些還想著 keepalive 或使用 vuex 等等,想想那樣麻煩多了。

  ps: 這種簡單的逆傳值是這樣實現沒錯,但如果 /two 頁面在進入 /three 頁面之前用戶進行了大量臨時性操作,到 /three 頁頁回來還需要繼續保持這些大量的操作就比較困難了,這個就等下期博客貼出來了

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.元組 元組和列表很相似,最大的區別就是不可以對元組進行修改,因此也可將元組稱之為不可修改的列表。 在表示上列表使用中括弧,元組使用的是小括弧。都是用逗號將元素隔開。 有一點值得註意的是,創建只有一個元素的元組時需在元素後加逗號,如tup = (2,)。所以可見元組判別元組的依據是逗號而不是小括弧 ...
  • feedparser模塊 1.簡介 feedparser是一個Python的Feed解析庫,可以處理RSS ,CDF,Atom 。使用它我們可從任何 RSS 或 Atom 訂閱源得到標題、鏈接和文章的條目了。 RSS(Really Simple Syndication,簡易信息聚合):是一種描述和同 ...
  • The GNU Compiler Collection (usually shortened to GCC) is a compiler system produced by the GNU Project supporting various programming languages. But ...
  • 1、Java常量的應用 語法:final 常量名 = 值; 舉一個簡單的例子 2、Java數組 Java中操作數組只需要四個步驟: (1)聲明數組 語法:數組類型[ ] 數組名; 或者數組類型 數組名[ ]; (2)分配空間 語法: 數組名 = new 數據類型 [ 數組長度 ]; 也可以直接合併 ...
  • 從0開始搭建自動部署環境(續) 前言 上一篇 "從0開始搭建自動部署環境" 雖然環境搭建起來了,但是配置少了一部分步驟。本來應該寫到上一篇中,但是這樣做篇幅過長了。另外,此篇會使用自動部署一個同步在Github上的Spring Boot項目為例,介紹如何使用該自動部署環境。 配置Global Too ...
  • 不管是java還是.net基礎設施必不可少。 MQ: 如果發現MQ是瓶頸。不管用的是rabbitmq還是kafka,其他的也好。作為生產者要確認超時時間、重試機制、非同步線程池。消費方要做兩件事:發現和解決。發現的主要是通過積壓閾值最快發現問題。解決的方法主要有:短期方案:增大線程數,增加伺服器。長期 ...
  • clipboard.js 可以實現純 JS 的從瀏覽器複製文本到系統剪貼板的功能。 使用方法: 1. 下載 clipboard.js,併在頁面中引入該插件。clipboard.js 下載地址: https://github.com/zenorocha/clipboard.js 2. 需要複製的目標文 ...
  • 原生js表單生成列表實現原理 這裡用到的一些方法有 insertBefore() createElement() appendChild() removeChild() and so on~~ 效果圖如下: ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...