欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決Vue.js應用回退或刷新界面時提示用戶保存修改問題

 更新時間:2019年11月24日 10:18:43   作者:popgis  
這篇文章主要介紹了Vue.js應用回退或刷新界面時提示用戶保存修改問題,本文通過兩種手段防止運營編輯時丟失數(shù)據(jù),具體內容詳情,感興趣的朋友跟隨小編一起看看吧

在實際應用中,運營人員在編輯數(shù)據(jù)時不希望因不小心點擊了瀏覽器的回退或刷新按鈕導致花費了很長時間編輯的數(shù)據(jù)丟失??梢圆捎靡韵聝煞N手段防止運營編輯時丟失數(shù)據(jù):

在運營人員刷新頁面或回退時,自動保留數(shù)據(jù)至瀏覽器端本地存儲,在重新進入編輯頁面時再將數(shù)據(jù)從本地存儲中加載到編輯界面。
第二種方法是在運營人員刷新或回退時,強提示運營人員有修改的數(shù)據(jù)尚未保存,詢問是否繼續(xù)。

無認采用哪一種方式,在技術實現(xiàn)上,我們需要首先能夠監(jiān)聽到用戶執(zhí)行回退或刷新頁面的動作。

實際上,當用戶執(zhí)行頁面刷新時,會觸發(fā) window 對象上的 onBeforeUnload 事件。所以,我們需要在頁面加載時開始監(jiān)聽此事件。在Vue.js應用中,我們可以在Vue.js的 mounted 生命周期事件函數(shù)中開始監(jiān)聽。

mounted() {
  window.onbeforeunload = e => {
    if (!this.modified) {
    return;
    }
    // 通知瀏覽器不要執(zhí)行與事件關聯(lián)的默認動作
    e.preventDefault();
    // Chrome 需要 returnValue 被設置成空字符串
    e.returnValue = '';
  };
},

有了以上的代碼,只要我們在修改了數(shù)據(jù)以后,將 modified 的值改為true,則可以在刷新整個頁面時彈出如下提示:

 

當用戶點擊上述對話框的[ 取消 ]按鈕后,會取消刷新動作,當用戶選擇[ 重新加載 ]后,瀏覽器會強制進行頁面的刷新。

由于在Vue.js應用中,通常是一個頁面的應用,所有的子頁面享用一個window對象,所以,如果在一個Vue.js頁面組件中增加了對onBeforUnload事件的監(jiān)聽,則可能會影響其它頁面組件的相關行為,而在其他頁面(如,僅瀏覽數(shù)據(jù)的頁面)是不希望進行相關的提示的,所以,我們需要在Vue.js組件卸載的時候取消對onBeforeUnload事件的監(jiān)聽。

destroyed() {
  // 取消對事件的監(jiān)聽
  window.onbeforeunload = null;
  },

用戶除了通過瀏覽器刷新操作退出外,還有兩種可能的退出途徑:

  • 點擊瀏覽器的前進或回退操作按鈕
  • 點擊單頁面中的前端路由鏈接

對于以上兩種退出途徑,onBeforeLoad事件通常是攔截不到相應的事件的,因為這兩種操作一般是前端路由的行為。

既然是前端路由的行為,我們就需要在前端路由事件上下功夫??上驳氖牵岸寺酚蓈ue-router為我們提供了 導航守衛(wèi) 的能力。關于vue-router導航守衛(wèi)的相關知識,大家可以參考: vue-router前端路由導航守衛(wèi) 。

前端路由導航守衛(wèi)分為全局守衛(wèi)、獨享守衛(wèi)、組件內守衛(wèi)等。這里我們使用的是組件內守衛(wèi)。

組件內守衛(wèi)有以下三種

  • beforeRouteEnter 組件第一次被渲染時調用
  • beforeRouteUpdate 路由改變但組件被復用時調用
  • beforeRouteLeave 導航離開組件時調用

顯而易見,我們需要監(jiān)聽并處理 beforeRouteLeave 事件。

beforeRouteLeave(to, from, next) {
  if (!this.modified) {
    next();
    return;
  }
  this.$confirm('當前頁面數(shù)據(jù)未保存,確定要離開?', '提示', { type: 'warning' })
  .then(() => {
    next();
  })
  .catch(() => {
   next(false);
  });
},

有了以上的代碼,當我們在進行路由切換時(點擊瀏覽器回退按鈕或點擊頁面中的其它路由鏈接)就會提示如下的對話框:

 

當用戶選擇取消時,回到原界面,當用戶點擊確定按鈕后,頁面強制刷新。

總結

以上所述是小編給大家介紹的解決Vue.js應用回退或刷新界面時提示用戶保存修改問題,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小會及時回復大家的!

相關文章

  • ant-design-vue中tree增刪改的操作方法

    ant-design-vue中tree增刪改的操作方法

    這篇文章主要介紹了ant-design-vue中tree增刪改的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 關于Vue-cli3煩人的eslint問題

    關于Vue-cli3煩人的eslint問題

    這篇文章主要介紹了關于Vue-cli3煩人的eslint問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue自定義省市區(qū)三級聯(lián)動

    Vue自定義省市區(qū)三級聯(lián)動

    這篇文章主要為大家詳細介紹了Vue自定義省市區(qū)三級聯(lián)動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue input標簽通用指令校驗的實現(xiàn)

    vue input標簽通用指令校驗的實現(xiàn)

    這篇文章主要介紹了vue input標簽通用指令校驗的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • 基于vue2的table分頁組件實現(xiàn)方法

    基于vue2的table分頁組件實現(xiàn)方法

    這篇文章主要為大家詳細介紹了基于vue2的table分頁組件實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Vue render深入開發(fā)講解

    Vue render深入開發(fā)講解

    這篇文章主要介紹了Vue render深入開發(fā)講解
    2018-04-04
  • Vue防抖與節(jié)流的使用介紹

    Vue防抖與節(jié)流的使用介紹

    防抖和節(jié)流的作用都是防止函數(shù)多次調用,下面這篇文章主要給大家介紹了關于vue函數(shù)防抖與節(jié)流的正確使用方法,需要的朋友可以參考下
    2022-12-12
  • vue3通過ref獲取子組件defineExpose的數(shù)據(jù)和方法

    vue3通過ref獲取子組件defineExpose的數(shù)據(jù)和方法

    defineExpose是Vue3中新增的選項,用于向父組件暴露子組件內部的屬性和方法,通過defineExpose,子組件可以主動控制哪些屬性和方法可以被父組件訪問,本文主要介紹了vue3通過ref獲取子組件defineExpose的數(shù)據(jù)和方法,需要的朋友可以參考下
    2023-10-10
  • VueJS頁面渲染之后如何調用函數(shù)

    VueJS頁面渲染之后如何調用函數(shù)

    這篇文章主要介紹了VueJS頁面渲染之后如何調用函數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue組件通信傳值操作示例

    vue組件通信傳值操作示例

    這篇文章主要介紹了vue組件通信傳值操作,結合實例形式分析了vue.js父子組件通信及兄弟組件通信相關操作技巧,需要的朋友可以參考下
    2019-01-01

最新評論