Emberjs async routing

Mój problem związany jest z problemami# 1183 i# 1268 emberjs.

Mam element dynamiczny na trasach. Wszystko jest w porządku, jeśli poruszam się po aplikacji. Problem polega na ponownym załadowaniu strony lub wpisaniu adresu URL. W takim przypadku aplikacja wchodzi w funkcję deserialize i ładuje i obiektuje według ich identyfikatora, ale to obciążenie jest asynchroniczne.

Sporny# 1268 lukemelia mówi„musisz wykonać wynik swojej metody deserializacji, wdrożyć wzór obietnic”.

Próbuję tego, ale zawsze luźny kontekst. Mój kod jest podobny do:

page: Ember.Route.extend
route: '/:alias'
deserialize: (router, params) -> page=App.Page.find(params.alias)
$.when( page.get("isLoaded") ).done( () -> console.debug(page.get("alias")) return page)
loading: Em.State.extend

Router przechodzi do stanu ładowania, ale następnie wraca bez danych kontekstowych. Myślę, że robię coś źle. Być może wszystko jest w porządku.

Czy ktoś może mi pomóc? Czy istnieje i przykład?

Dzięki!

Zdecydowany:

page: Ember.Route.extend
    route: '/:id'
    deserialize: (router, params) ->
        page=App.Page.find(params.id})
        deferred = $.Deferred()
        page.addObserver("isLoaded", -> deferred.resolve(page))
        return deferred.promise()
    serialize: (router, page) ->
        return {id: page.get("id") }
    connectOutlets: (router, page) ->
        router.get('applicationController').connectOutlet
            context: page
            name: "page"
loading: Em.State.extend
    connectOutlets: (router, context) ->
        router.get('applicationController').connectOutlet(context: context, name: "loading")

Podczas ładowania strony aktywny jest stan ładowania, gdy ładowanie kończy się, router ładuje stan strony automatycznie.

Mam nadzieję, że to może komuś pomóc

questionAnswers(1)

yourAnswerToTheQuestion