Моя проблема связана с проблемами # 1183 и # 1268 emberjs.
У меня есть динамический элемент на маршрутах. Все нормально, если я перемещаю приложение throuht. Проблема в том, что я перезагружаю страницу или когда тип url. В этом случае приложение вводит функцию десериализации, а также нагрузку и объект по их идентификатору, но эта загрузка является асинхронной.
В вопросе # 1268 lukemelia говорит: "вам нужно будет сделать результат вашего метода десериализации для реализации шаблона promises".
Я пробовал, но всегда терял контекст. Мой код похож на:
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
Маршрутизатор переходит в состояние загрузки, а затем возвращается без контекстных данных. Я думаю, что я делаю что-то неправильно. Возможно, все не так.
Может кто-нибудь мне помочь? Есть ли и пример?
Спасибо!
Решено:
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")
При загрузке страницы загружается активное состояние, при загрузке страницы автоматически загружается страница загрузки роутера.
Я надеюсь, что это может помочь кому-то