2013-11-23 24 views
0

當路線/facades被訪問時,我想重定向到第一個門面。這通常起作用,但由於服務器列表沒有排序,我的代碼不會重定向到「第一個」外觀。我知道如何在控制器中進行排序,但我怎樣才能通過任何屬性排序路由器/模型?Ember在路由器/型號中的排序數據

App.FacadesRoute = Ember.Route.extend 
    model: -> 
    @get("store").find("facade") 

    redirect: -> 
    facade = @modelFor("facades").get("firstObject") 
    @transitionTo("facades.show", facade) 

回答

1

重定向已過時,建議爲afterModel,並findProperty是超級容易尋找基於模型的一些特性集合中的一個模型,或者如果你不知道到底可以使用sortBy

App.FacadesRoute = Ember.Route.extend 
    model: -> 
    @get("store").find("facade") 

    afterModel: (model, transition) -> 
    facade = model.findProperty("someproperty", "value on some property"); 
    // or 
    facade = model.sortBy("someproperty").get('firstObject'); 
    @transitionTo("facades.show", facade) 
+0

如果我不知道「上的一些屬性值」,而要使用的第一個(按字母順序排序爲例) ? – gucki

+0

sortBy,應該做的伎倆;) – Kingpin2k

+0

sortBy被添加到燼1.2.0,它尚未與emblemjs工作。至少我升級到1.2.0時出現編譯錯誤:( – gucki

0

好吧,我只是找到了一種有效的方法。不知道這是最好的,但我認爲這可能是有用的人太:

App.FacadesRoute = Ember.Route.extend 
    model: -> 
    @get("store").find("facade") 

    redirect: -> 
    sortedFacades = Ember.ArrayProxy.createWithMixins Ember.SortableMixin, 
     sortProperties: ["id"] 
     content: @modelFor("facades") 
    facade = sortedFacades.get("firstObject") 
    @transitionTo("facades.show", facade)