在vue中實現(xiàn)簡單頁面逆?zhèn)髦档姆椒?/h1>
更新時間:2017年11月27日 08:39:37 作者:布爾-
vue是一個單頁應(yīng)用,輕量,并且不會重復(fù)下載數(shù)據(jù)。當(dāng)它從一個頁面跳轉(zhuǎn)到另一個頁面時,原來的頁面的vue實例和相關(guān)數(shù)據(jù)已經(jīng)銷毀了,要實現(xiàn)逆?zhèn)髦稻鸵业讲僮鞯膶ο蠹八囊恍傩?/div>
【需求】
要實現(xiàn)的需求很簡單,頁面從A -> B,用戶在B觸發(fā)操作,將一些數(shù)據(jù)帶回到A頁面,在網(wǎng)上找了好久也只看到有人問,但總找不到很好答案。要實現(xiàn)的效果圖如下:

【聯(lián)想】
在 ios 開發(fā)中,頁面跳轉(zhuǎn) A -> B -> C,到 C 頁面后,內(nèi)存中一直存儲著 A 和 B 頁面的數(shù)據(jù)和狀態(tài),通過導(dǎo)航堆棧遍歷數(shù)組可以拿到之前的頁面進行修改賦值等,另外還有代理,block傳值等操作?! ?/p>
vue是一個單頁應(yīng)用,輕量,并且不會重復(fù)下載數(shù)據(jù)。當(dāng)它從一個頁面跳轉(zhuǎn)到另一個頁面時,原來的頁面的vue實例和相關(guān)數(shù)據(jù)已經(jīng)銷毀了,要實現(xiàn)逆?zhèn)髦稻鸵业讲僮鞯膶ο蠹八囊恍傩浴?/p>
【嘗試】
在 three 頁面中打印路由相關(guān)信息,如下:

本來是想在其對象中查看是否有可操作的對象,但發(fā)現(xiàn)都不好操作甚至太麻煩,并不像 ios 中一樣。然后嘗試對其中一些對象 prototype 或 __proto__ 主動添加想要存儲的數(shù)據(jù),實際結(jié)果也是要么報錯不通過,要么路由切換時數(shù)據(jù)就沒了。
這兩天又重新看了看vue的官網(wǎng)指導(dǎo),發(fā)現(xiàn)除了全局路由有對應(yīng)的時機方法,對于組件路由也有幾個對應(yīng)的鉤子函數(shù)。
在第三個頁面中實現(xiàn) beforeRouteLeave,打印對應(yīng)的參數(shù)發(fā)現(xiàn)確實可以拿到前后路由。如下:

【相關(guān)代碼】
/three 頁面中的 input 與變量 selVal 綁定,然后在此頁面的路由方法中,判斷如果是回第二個頁面,則將要傳的參數(shù)賦值到對應(yīng)query 或 params中,params 中的數(shù)值如果用戶刷新當(dāng)前頁面參數(shù)值會丟失,而query則是拼接在 url 后面,刷新頁面值也不會丟失。如下:
beforeRouteLeave(to, from, next) {
if (to.name == 'Two') {
to.query.temp = this.selVal;
}
next();
}
在 /two 頁面的 mounted 方法中獲取相應(yīng)的值
mounted() {
if (this.$route.query.temp) {
this.temp = this.$route.query.temp;
}
}
這樣就完了,真想說句靠,怎么原來就沒發(fā)現(xiàn)呢,之前實現(xiàn)這些還想著 keepalive 或使用 vuex 等等,想想那樣麻煩多了。
ps: 這種簡單的逆?zhèn)髦凳沁@樣實現(xiàn)沒錯,但如果 /two 頁面在進入 /three 頁面之前用戶進行了大量臨時性操作,到 /three 頁頁回來還需要繼續(xù)保持這些大量的操作就比較困難了,這個就等下期博客貼出來了。
總結(jié)
以上所述是小編給大家介紹的在vue中實現(xiàn)簡單頁面逆?zhèn)髦档姆椒ǎM麑Υ蠹矣兴鶐椭?,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
-
Vue項目打包部署到GitHub Pages的實現(xiàn)步驟
本文主要介紹了Vue項目打包部署到GitHub Pages的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 2022-04-04
-
vue中$nexttick,$set,$forceupdate的區(qū)別
本文主要介紹了vue中$nexttick,$set,$forceupdate的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧 2023-07-07
最新評論
【需求】
要實現(xiàn)的需求很簡單,頁面從A -> B,用戶在B觸發(fā)操作,將一些數(shù)據(jù)帶回到A頁面,在網(wǎng)上找了好久也只看到有人問,但總找不到很好答案。要實現(xiàn)的效果圖如下:
【聯(lián)想】
在 ios 開發(fā)中,頁面跳轉(zhuǎn) A -> B -> C,到 C 頁面后,內(nèi)存中一直存儲著 A 和 B 頁面的數(shù)據(jù)和狀態(tài),通過導(dǎo)航堆棧遍歷數(shù)組可以拿到之前的頁面進行修改賦值等,另外還有代理,block傳值等操作?! ?/p>
vue是一個單頁應(yīng)用,輕量,并且不會重復(fù)下載數(shù)據(jù)。當(dāng)它從一個頁面跳轉(zhuǎn)到另一個頁面時,原來的頁面的vue實例和相關(guān)數(shù)據(jù)已經(jīng)銷毀了,要實現(xiàn)逆?zhèn)髦稻鸵业讲僮鞯膶ο蠹八囊恍傩浴?/p>
【嘗試】
在 three 頁面中打印路由相關(guān)信息,如下:
本來是想在其對象中查看是否有可操作的對象,但發(fā)現(xiàn)都不好操作甚至太麻煩,并不像 ios 中一樣。然后嘗試對其中一些對象 prototype 或 __proto__ 主動添加想要存儲的數(shù)據(jù),實際結(jié)果也是要么報錯不通過,要么路由切換時數(shù)據(jù)就沒了。
這兩天又重新看了看vue的官網(wǎng)指導(dǎo),發(fā)現(xiàn)除了全局路由有對應(yīng)的時機方法,對于組件路由也有幾個對應(yīng)的鉤子函數(shù)。
在第三個頁面中實現(xiàn) beforeRouteLeave,打印對應(yīng)的參數(shù)發(fā)現(xiàn)確實可以拿到前后路由。如下:
【相關(guān)代碼】
/three 頁面中的 input 與變量 selVal 綁定,然后在此頁面的路由方法中,判斷如果是回第二個頁面,則將要傳的參數(shù)賦值到對應(yīng)query 或 params中,params 中的數(shù)值如果用戶刷新當(dāng)前頁面參數(shù)值會丟失,而query則是拼接在 url 后面,刷新頁面值也不會丟失。如下:
beforeRouteLeave(to, from, next) { if (to.name == 'Two') { to.query.temp = this.selVal; } next(); }
在 /two 頁面的 mounted 方法中獲取相應(yīng)的值
mounted() { if (this.$route.query.temp) { this.temp = this.$route.query.temp; } }
這樣就完了,真想說句靠,怎么原來就沒發(fā)現(xiàn)呢,之前實現(xiàn)這些還想著 keepalive 或使用 vuex 等等,想想那樣麻煩多了。
ps: 這種簡單的逆?zhèn)髦凳沁@樣實現(xiàn)沒錯,但如果 /two 頁面在進入 /three 頁面之前用戶進行了大量臨時性操作,到 /three 頁頁回來還需要繼續(xù)保持這些大量的操作就比較困難了,這個就等下期博客貼出來了。
總結(jié)
以上所述是小編給大家介紹的在vue中實現(xiàn)簡單頁面逆?zhèn)髦档姆椒ǎM麑Υ蠹矣兴鶐椭?,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Vue項目打包部署到GitHub Pages的實現(xiàn)步驟
本文主要介紹了Vue項目打包部署到GitHub Pages的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04vue中$nexttick,$set,$forceupdate的區(qū)別
本文主要介紹了vue中$nexttick,$set,$forceupdate的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07