作为我另一个问题的后续(我认为这个问题更具体),我想问你如何在应用程序启动时加载数据。我需要一些缓存策略。
我们内部应用程序中显示的数据每周刷新一次,因此我不想在每次用户输入路线时都发出新请求(现在我看到很多 ajax 请求在应用程序中移动)。
.all() 方法可能会解决我的问题,但首先我必须加载数据。
我还能在哪里加载控制器和模板可以访问的数据?model
是否可以像使用andcontrollerFor
钩子一样在应用程序启动时加载数据并将其传递给控制器?
在我看来,用户必须每周刷新一次应用程序是没有问题的——也许我们以后可以改变它。
我对直观像素答案的理解
首先从服务器加载数据:
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
或controler.gravatar
没有成功。
其余部分在视图中可见