私の別の質問(これはより具体的だと思います)のフォローアップとして、アプリの起動時にデータをロードする方法をお尋ねしたいと思います。キャッシュ戦略が必要です。
内部アプリに表示されるデータは週に 1 回更新されるため、ユーザーがルートに入るたびに新しいリクエストを作成する必要はありません (現在、多くの ajax リクエストがアプリ内を移動しています)。
.all() メソッドはおそらく私の問題を解決するでしょうが、最初にデータをロードする必要があります。
コントローラー、次にテンプレートにアクセスできるデータを他にどこにロードできますか? model
アプリの起動時にデータを読み込んで、フックとフックのようにコントローラーに渡すことはできますcontrollerFor
か?
私の意見では、ユーザーが週に 1 回アプリを更新しなければならないことは問題ありません。後で変更できるかもしれません。
直感的なピクセルの答えの私の理解
最初にサーバーからデータをロードします。
App = Ember.Application.create({
ready: function() {
this.set('userCache', App.User.find());
this.set('currentUserCache', App.User.find(1));
this.set('topCache', App.Top.find());
}
});
次に、キャッシュからデータをロード (ストア)
App.SomeRoute = Ember.Route.extend
setupController: (controller, model) ->
@controllerFor('user').set 'content', App.User.all()
# though I can access its properties via console data is not visible in the template
@controllerFor('currentUser').set 'content', App.User.all().objectAt(0)
@controllerFor('top').set 'content', App.Top.all()
たとえば、次の方法でアバター ソースにアクセスできます。
App.CurrentUser.all().objectAt(0).get('gravatar')
テンプレートには表示されません
{{#linkTo 'users' classNames="avatar pull-left" title="back"}}
{{avatar gravatar}}
{{/linkTo}}
content.gravatar
私もorで試しましcontroler.gravatar
たが、成功しませんでした。
残りはビューに表示されます