在完成畢業設計(基於Vue的信息資訊展示與管理平台)的過程中,處理如下圖所示的 點擊左側欄目列表跳轉到對應文章列表 的問題時,初次點擊可以跳轉到對應的頁面,但是當第二次點擊時,雖然地址欄的參數改變了,也沒有重新刷新頁面中的內容。
第1次,點擊“潮科技”時顯示的內容:
第2次,點擊“奇趣事”時顯示的內容:
造成上述情況的原因:
- vue項目中路由跳轉默認采用hash的方式,而hash的變化不會導致瀏覽器發送請求到服務器;
- 將獲取數據的的函數的執行放在了Vue生命周期函數 mounted() 中,組件初次加載時執行了 mounted() 函數中的內容,但是再次點擊時只有參數變化,組件已經掛載結束而且不會重新加載,mounted() 中的內容當然也就不會重新執行了。
解決方案:使用偵聽器監聽URL地址欄參數變化
當偵聽器監聽到URL地址欄參數變化時,調用獲取數據列表的函數 getDate()
watch: { '$route' (to, from) { this.getData(this.$route.query.id) } }
methods: { async getData (id) { // 按照id獲取數據 const { data: { result } } = await this.$http.get('getShowList', { params: { id } }) this.dataList = result } }
通過這種方式,就能使頁面內容隨着參數變化而變化了,如下圖所示: