問題

當我使用 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實作的方式不同所致。