2016-03-16 28 views
0

我在一個燼組件中有一個下拉菜單。當用戶選擇一個選項時,組件向該路由發送一個動作,並且該路由改變控制器中的一個屬性,並使transitionToRoute到一個不同的url。灰燼。當用戶刷新網站時保持下拉菜單中的選擇

實施例:

ROOTPATH = www.example.com

用戶選擇糖果。 Url => www.example.com/candy

糖果後,用戶選擇kitkat。 => www.example/candy/kitkat。

如果用戶刷新網站或共享網址,下拉菜單顯示爲未選中狀態。 我知道使用查詢參數修復了這一點,但我不想使用查詢參數。

任何想法我該怎麼做? 謝謝!

+0

是否有是無狀態的?餅乾怎麼樣? – Pavol

+0

不確定,我認爲它應該是無狀態的。例如,如果這是用戶第一次進入網站並鍵入www.example/candy/kitkat,它應該顯示在下拉菜單中選擇的選項 – Wesley

+0

嗯,我相信你可以使用一個服務來區分如何處理下拉菜單。如果您不想使用查詢參數,則可能必須使用cookie,因爲AFAIK會通過整頁刷新失去當前應用程序狀態。 – Pavol

回答

1

你可以在初始化時使用window.location。並從中提取最後一部分。然後從您選擇的數據中選擇以下選項。

像這樣的事情

.... 
this._super(...arguments); 
var fullURL = window.location.href; // www.example.com/candy 
var splittedURL = fullURL.split('/'); 
var lastPart = Ember.get(splittedURL, 'lastObject'); // candy. 
var chocolateData = this.get('selectMenuContent'); 
var toSetOnInit = chocolateData.findBy('value', lastPart); 
this.set('myChocolateSelection', toSetOnInit); 
... 
+0

謝謝Kristjan! – Wesley

+0

我試圖在我的控制器中寫這個。如果我將splittedUrl定義爲控制器的屬性,如何從另一個屬性訪問它? – Wesley

+0

@Wesley你是什麼意思的另一個屬性?像另一條路線什麼的? –