2017-04-09 57 views
0

我有一個從Ember.js構建的網站。用戶可以通過URL http://..../view?showTitle=true訪問頁面。但我不想明確地向用戶顯示參數showTitle = true(意味着用戶將只看到http://..../view)。此網址會自動生成並用作重定向目標網址。所以,我必須在頁面加載之前手動將其刪除。但我仍然需要這個查詢參數的值來查詢數據。有沒有辦法做到這一點(一個例子會很棒)?怎麼做,而不刷新路由器?如何從URL中刪除查詢參數而無需刷新Ember中的路由器js

回答

1

其實,您的方案的一個例子是更大:)

還有一些其他的方法來存儲數據,而轉換到路線。如:將參數存儲在transition對象中或將值存儲在服務中。創建重定向路由,使用beforeModel鉤子從查詢參數中獲取值,然後重定向到真實路由。

的工作的例子是:ember-twiddle-1

順便說一句,即使你沒有描述你的queryParams在你的路線,你可以通過transition.queryParams訪問它們。這似乎有點冒失。但是,它的工作原理:ember-twiddle-2(注:它不會在同一路線的工作。)

更新時間:

setupController鉤子可以覆蓋控制器參數。所以你可以從url中刪除參數。 ember-twiddle-3

+0

謝謝你的例子。 'this.transitionTo({queryParams:{showTitle:undefined}});'用於轉換到相同的模型。有沒有辦法做到這一點,而無需進行任何轉換? – Hengstar

+0

是的。通過重寫'setupController'掛鉤。我剛剛更新了我的答案,並添加了第三個旋律。 – ykaragol

+0

是的,這太棒了!它似乎在旋轉中運作良好。但是當我在本地運行它時,它只在單擊頁面中的鏈接時才起作用。手動打開* http:// localhost:4200/my-route?showTitle = false *不會更新鏈接以刪除參數。就我而言,這個URL由後端組成。所以我們可以把它作爲用戶輸入。 – Hengstar