2017-02-13 61 views
0

我正在使用Vue.js作爲CRUD系統,跟蹤許多不同的領域類,如客戶,產品等。我有一個驗證混合,我在每個編輯器組件中使用(例如,CustomerDetail,產品信息)。因爲我希望用戶在不保存的情況下離開頁面時的常見行爲,我希望能夠在我的驗證混合中使用一個方法,我可以在'beforeRouteLeave'中調用該方法。我想出的方法是這樣的:beforeRouteLeave和mixin

checkOnLeave(obj,message,confirmText="Leave",cancelText="Continue Editing",next){ 
    if (this.isDirty(obj)) { //isDirty checks whether object has been changed 
    bootbox.confirm({ 
     message: message, 
     buttons: { 
     confirm: { 
      label: confirmText, 
     }, 
     cancel: { 
      label: cancelText, 
     } 
     }, 
     callback: function (result) { 
     if (result) { 
      next(); 
     } else { 
      next(false); 
     } 
     } 
    }); 
    } else { 
    next(); 
    } 
} 

當我嘗試利用這一點,雖然,它沒有任何想法做什麼用的「下一步」。很明顯,這是vue-router不知道的。那麼我怎麼能讓我的mixin vue-router知道,以便我可以使用它呢?

+0

請向我們展示如何在'beforeRouteLeave'中調用此函數。 – mzgajner

+0

只是再次嘗試,它的工作,所以沒有問題,它的工作原理,因爲我預計它會工作。要回答你的具體問題,就像這樣:'beforeRouteLeave(to,from,next){this.checkOnLeave(this.settings,「你確定要離開設置編輯器嗎?你將失去任何新的或改變的數據」, 「離開」,「繼續編輯」,下一步);}' –

回答

0

紅鯡魚警報。它實際上工作正常 - 它一定是在編譯之前導致問題的延遲(它偶爾會發生'npm run dev',編譯偶爾不會啓動)。