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/ に入るのは 2 回目です。リダイレクトはうまく機能します。

(投稿のモデルが作成されたため)

コンテキストのモデルが完全にロードされた後、どのように移行作業を強制するのですか?

(モデル処理には ember-data を使用しています。)

4

2 に答える 2

0

あなたが質問で言うように、問題はあなたがルートに行く時までに最近の投稿がロードされないということです。3つのオプションがあります。

アプリのセットアップでプリロード

一般的な解決策の1つは、アプリケーションセットアップで最近の投稿をインスタンス化してフェッチし、利用可能になるまでスピナーを表示することです。

投稿/インデックスを読み込む

もう1つのもう少し洗練されたオプションは、posts.index状態にスピナーを表示させ、最近の投稿をフェッチし、利用可能な場合は最新の投稿にリダイレクトすることです。

にリダイレクト/posts/last

そのための新しいルートを追加すると、/posts/lastほとんどルートと同じように機能しPostShowますが、最後のいくつかのモデルをフェッチして、を選択しlastObjectます。

于 2013-02-19T15:50:14.387 に答える
0

表示される動作は 2 つのバグによるものだと思います。

  • ember-data #587の 1 つです。これにより、サーバーからのデータが読み込まれるときにのみ、レコード配列が読み込まれなくなります。#735の修正により、このバグは修正されるはずです。

  • 1 つは ember #2116にあり、これはモデルがロードされる前にリダイレクト ブロック呼び出しを行います

両方が修正されると、これでバグが発生することはありません。

于 2013-02-19T13:35:28.813 に答える