最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Vue.js應(yīng)用回退或刷新界面時(shí)提示用戶保存修改問題

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

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

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

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

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

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

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

 

當(dāng)用戶點(diǎn)擊上述對話框的[ 取消 ]按鈕后,會取消刷新動作,當(dāng)用戶選擇[ 重新加載 ]后,瀏覽器會強(qiáng)制進(jìn)行頁面的刷新。

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

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

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

  • 點(diǎn)擊瀏覽器的前進(jìn)或回退操作按鈕
  • 點(diǎn)擊單頁面中的前端路由鏈接

對于以上兩種退出途徑,onBeforeLoad事件通常是攔截不到相應(yīng)的事件的,因?yàn)檫@兩種操作一般是前端路由的行為。

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

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

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

  • beforeRouteEnter 組件第一次被渲染時(shí)調(diào)用
  • beforeRouteUpdate 路由改變但組件被復(fù)用時(shí)調(diào)用
  • beforeRouteLeave 導(dǎo)航離開組件時(shí)調(diào)用

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

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

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

 

當(dāng)用戶選擇取消時(shí),回到原界面,當(dāng)用戶點(diǎn)擊確定按鈕后,頁面強(qiáng)制刷新。

總結(jié)

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

相關(guān)文章

  • vue配置接口域名方法總結(jié)

    vue配置接口域名方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于vue配置接口域名方法和相關(guān)知識點(diǎn)總結(jié),需要的朋友們跟著操作下。
    2019-05-05
  • vue組件生命周期詳解

    vue組件生命周期詳解

    這篇文章主要為大家詳細(xì)介紹了vue組件生命周期,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 基于Vue2實(shí)現(xiàn)的仿手機(jī)QQ單頁面應(yīng)用功能(接入聊天機(jī)器人 )

    基于Vue2實(shí)現(xiàn)的仿手機(jī)QQ單頁面應(yīng)用功能(接入聊天機(jī)器人 )

    這篇文章主要介紹了基于Vue2實(shí)現(xiàn)的仿手機(jī)QQ單頁面應(yīng)用功能(接入聊天機(jī)器人 ),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • swiper在vue中的簡單使用方法

    swiper在vue中的簡單使用方法

    Swiper常用于移動端網(wǎng)站的內(nèi)容觸摸滑動,Swiper是純javascript打造的滑動特效插件,面向手機(jī)、平板電腦等移動終端,下面這篇文章主要給大家介紹了關(guān)于swiper在vue中的簡單使用方法,需要的朋友可以參考下
    2022-09-09
  • Element 頭像上傳的實(shí)戰(zhàn)

    Element 頭像上傳的實(shí)戰(zhàn)

    頭像上傳在很多實(shí)例中都可以用到,本文主要介紹了Element 頭像上傳,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 詳解jenkins自動化部署vue

    詳解jenkins自動化部署vue

    這篇文章主要介紹了jenkins自動化部署vue,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vuejs中監(jiān)聽窗口關(guān)閉和窗口刷新事件的方法

    vuejs中監(jiān)聽窗口關(guān)閉和窗口刷新事件的方法

    今天小編就為大家分享一篇vuejs中監(jiān)聽窗口關(guān)閉和窗口刷新事件的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue 設(shè)置 input 為不可以編輯的實(shí)現(xiàn)方法

    vue 設(shè)置 input 為不可以編輯的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇vue 設(shè)置 input 為不可以編輯的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • vue中關(guān)于v-for循環(huán)key值問題的研究

    vue中關(guān)于v-for循環(huán)key值問題的研究

    這篇文章主要介紹了vue中關(guān)于v-for循環(huán)key值問題的研究,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue3父組件使用ref獲取子組件的屬性和方法

    vue3父組件使用ref獲取子組件的屬性和方法

    在vue3中父組件訪問子組件中的屬性和方法是需要借助于ref,蘇哦一本文小編給大家介紹了vue3父組件如何使用ref獲取獲取子組件的屬性和方法,文中詳細(xì)的代碼講解,需要的朋友可以參考下
    2023-11-11

最新評論

英德市| 磐石市| 巴彦县| 织金县| 图木舒克市| 南汇区| 锡林郭勒盟| 同江市| 突泉县| 扶余县| 融水| 镇原县| 隆回县| 漳州市| 天镇县| 久治县| 炉霍县| 建始县| 古交市| 盐源县| 鄂尔多斯市| 易门县| 鄢陵县| 嘉峪关市| 吉首市| 武乡县| 谷城县| 黄陵县| 兴安县| 伊吾县| 五原县| 茌平县| 天峨县| 股票| 合肥市| 资中县| 清水河县| 新邵县| 盐池县| 安平县| 化德县|