Emberjs roteamento assíncrono

Meu problema está relacionado com os problemas# 1183 e# 1268 de emberjs.

Eu tenho elementos dinâmicos nas rotas. Tudo está bem se eu navegar pelo aplicativo. O problema é quando eu recarrego uma página ou quando digito o URL. Nesse caso, o aplicativo entra na função desserializar e carrega e objeto por seu id, mas essa carga é assíncrona.

Em causa# 1268 lukemelia diz"você precisará fazer com que o resultado do seu método de desserialização implemente o padrão de promessas".

Eu tento, mas sempre contexto solto. Meu código é semelhante a:

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

O roteador vai para o estado de carregamento, mas retorna sem dados de contexto. Eu acho que estou fazendo algo errado. Possivelmente tudo está errado.

Alguém pode me ajudar? Existe e exemplo?

Obrigado!

Resolvido:

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")

Enquanto a página está carregando, o estado ativo está carregando, quando o carregamento da página termina, o estado da página de carregamento do roteador é automaticamente.

Espero que isso possa ajudar alguém

questionAnswers(1)

yourAnswerToTheQuestion