問題
當我使用 navigate() 時,發現有的 routes 會被執行兩次,找了好久找不出原因。
1 | router.navigate('show/' + place, {trigger: true}); |
甚至連 source code 都 trace 了,發現在this.fragment = fragment;
這行之後就會出錯。
解法
原來是這樣,我的 place 這個變數有可能會是中文,必須要加上 encodeURIComponent(),navigate() 才會正常執行。
1 | router.navigate('show/' + encodeURIComponent(place), {trigger: true}); |
這個問題只有在 firefox 上會發生,推斷大概是window.location.hash
實作的方式不同所致。