Emberjs асинхронная маршрутизация

Моя проблема связана с проблемами#1183 а также#1268 Эмберс.

У меня есть динамический элемент на маршрутах. Все в порядке, если я перехожу через приложение. Проблема в том, когда я перезагружаю страницу или когда набираю URL. В этом случае приложение входит в функцию десериализации и загружает объект по их идентификатору, но эта загрузка является асинхронной.

Под вопросом#1268 Лукемелия говорит"you will need to make the result of your deserialize method implement the promises pattern".

Я стараюсь, но всегда теряю контекст. Мой код похож на:

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

Маршрутизатор переходит в состояние загрузки, но затем возвращается без контекстных данных. Я думаю, что я делаю что-то не так. Возможно, все не так.

Кто-нибудь может мне помочь? Есть ли и пример?

Спасибо!

Resolved:

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

Во время загрузки страницы активное состояние загружается, когда страница завершает загрузку, маршрутизатор загружает состояние страницы автоматически.

Я надеюсь, что это может кому-то помочь

Ответы на вопрос(1)

Ваш ответ на вопрос