2014-01-17 38 views
6

我有一個「過濾器」模型,用戶可以通過點擊頁面來改變這個模型。過渡到相同的模型相同的路線

因此,當用戶對模型進行更改時,我想轉換到他當前所在的路由,因爲URL根據模型的細節而有所不同(我已在路線上重寫了「serialize」以確保是這種情況)。

現在看來,Ember似乎無視我的請求,轉而使用相同型號的同一條路線。模型被改變了,我的模板也發生了變化,但是我希望URL也能反映到Filter的變化。

我該怎麼做?

編輯:

這裏是我的ApplicationController代碼現在

App.ApplicationController = Ember.Controller.extend 
    currentFilter: null 

    actions: 
     toggleRegion: (region_id) -> 
      region = this.store.getById('region', region_id) 

      filter = this.get('currentFilter') 

      # modify the filter 
      if filter.containsAtLeastOneCityOfRegion(region) 
       filter.disableRegion(region) 
      else 
       filter.enableRegion(region) 

      this.replaceRoute('listings', filter) 

,此按預期工作時,我在「指數」的路線,但如果我已經在「清單」路線,模型按預期進行了修改,但路線替換沒有發生,因此,我的URL沒有使用正確的動態段更新(來自我的ListingsRoute的「序列化」方法)。

+0

請添加您的代碼。 – Pheonix

+0

您是否在使用transitionToRoute(http://emberjs.com/api/classes/Ember.Controller.html#method_transitionToRoute)傳遞新模型? –

+0

在我的代碼中看到,我現在使用「replaceRoute」,但傳遞相同(但已修改)的模型對象。 – elsurudo

回答

3

它看起來像Ember做一個無操作,如果你想過渡到(或替換,就像我一樣)到你正在使用的相同路線,使用與當前模型具有相同身份的模型對象。

所以我需要做的是克隆對象,做出我需要做的改變,然後然後做過渡。

+0

你如何克隆物體? – HypeXR

+1

我包含「Ember.Copyable」混合,並實現「複製」方法。 – elsurudo

相關問題