【发布时间】:2013-01-26 16:27:49
【问题描述】:
[这是关于新的 1.0.0-pre.4+ 路由器。]
我想从 Ember Route 的 model 方法返回一个需要异步回调才能加载的记录,例如因为它需要我们加载多个(嵌套)模型。最好的方法是什么?
下面是一个假设的博客应用程序的示例代码,用于说明问题:
App.Router.map ->
@resource 'filteredArticles', path: '/:filter'
App.FilteredArticlesRoute = Ember.Route.extend
model: (params) ->
blog = App.Blog.find(1) # get the user's Blog singleton
property = switch params.filter
when 'published' then 'publishedArticles'
when 'draft' then 'drafts'
when 'all' then 'articles'
# Return the list of articles from the `blog` record.
# But `blog` hasn't necessarily finished loading :(
blog.get(property)
【问题讨论】:
-
据我所知,如果您只返回
blog.get(property),它将返回另一个承诺,该承诺将被异步获取。 -
我希望这样做,但它只是返回一个永远不会更新的空数组——即使重新运行
App.Blog.find(1).get('articles')会产生一个非空数组。 -
这对我来说更像是一个 github 问题 :)
-
我也遇到过类似的问题(但在控制器中操作内容时),并求助于
isLoaded(gist.github.com/domchristie/4774472):一种受Discourse source code 启发的模式。你能体验this issue吗? -
感谢 Dom - 您链接的代码并不能解决路由器希望您立即返回某些内容的问题,但问题讨论 (#1642) 看起来很有趣。
标签: ember.js ember-router