0

我有一条显示帖子列表的路线(PostsRou​​te)

我希望 PostsIndexRoute 被重定向到

PostRoute(不是 PostsRou​​te,代表一个帖子)与最后一个帖子的上下文。

我的应用程序的布局是在此处输入图像描述

所以我写了一个像这样的 PostsIndex 路由

App.PostsIndexRoute = Ember.Route.extend({ 
    redirect: function() {
          var p = this.modelFor('posts').get('lastObject');
          this.transitionTo('post', p);
    }
});

当我第一次输入 /posts/ 时,重定向不起作用。

(因为 Posts 的模型不会立即填充。)

但是第二次进入/posts/。重定向效果很好。

(因为帖子的模型现在已填充)

如何在上下文模型完全加载后强制转换工作?

(我正在使用 ember-data 进行模型处理。)

4

2 回答 2

0

我相信您看到的行为来自 2 个错误:

  • ember-data #587中的一个,这可以防止仅在加载来自服务器的数据时才加载记录数组。随着#735中的修复,这个错误应该得到修复。

  • ember #2116中的一个,这个在模型加载之前进行重定向块调用

当它们都被修复时,您不应该遇到任何错误。

于 2013-02-19T13:35:28.813 回答
0

正如您在问题中所说,问题在于您前往路线时尚未加载最近的帖子。我看到三个选项:

应用程序设置中的预加载

一种常见的解决方案是在应用程序设置中实例化和获取最近的帖子,并显示一个微调器,直到它们可用。

加载帖子/索引

另一个稍微复杂的选项是让posts.index状态显示一个微调器,获取最近的帖子,并在可用时重定向到最近的帖子。

重定向到/posts/last

为其添加一个新路由,/posts/last该路由的行为主要类似于PostShow路由,但会获取最后几个模型并选择lastObject.

于 2013-02-19T15:50:14.387 回答