我的问题与问题相关#1183 and #1268emberjs 的。
我在路线上有动态元素。如果我通过应用程序导航,一切都可以。问题是当我重新加载页面或输入网址时。在这种情况下,应用程序进入反序列化函数并通过其 id 加载和对象,但此加载是异步的。
有争议#1268卢克梅利亚 说“您需要使反序列化方法的结果实现承诺模式”.
我尝试过,但总是松散上下文。我的代码类似于:
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
路由器进入加载状态,但随后返回,但没有上下文数据。我想我做错了什么。也许一切都是错的。
有谁能够帮助我?有没有和例子?
Thanks!
解决:
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")
当页面加载时,活动状态正在加载,当页面加载完成时,路由器自动加载页面状态。
我希望这可以帮助别人