我有一个带有三个主要模板的Ember / rails应用程序,Home,Contacts和Payments。联系人和付款模板都需要一系列联系人。需要从外部api填充此数组。目前,对于每次我要访问此模板时的联系人,外部api正在被攻击。理想情况下,当用户首次登录时,我想异步点击api,抓取一次这个数据,并且可以在不需要外部api的情况下再参考它。
使用rails我可以轻松地为用户添加带有postgres json列的has_one:contacts_list,并在切换模板时有条件地在需要时刷新它。我很好奇在ember中处理这个问题的最佳方法。
答案 0 :(得分:1)
我在路由上使用setupController
方法来执行此类缓存。只需检查内容是否已经可用,只有在内容不存在时才加载。像这样:
App.ContactsRoute = Ember.Route.extend({
setupController : function(controller,model){
if(!controller.get('content')){
this.store.find('contact').then(function(contacts){
controller.set('content',contacts)
});
}
}
});
答案 1 :(得分:1)
您应该为“联系人”创建DS.Model,并在“联系人和付款”模型上使用has_many。然后,您可以指定'async:true',如
DS.hasMany('contact', {async: true}),
如果尚未加载联系人,则会异步加载联系人。如果它们已被加载,它将只返回加载的联系人。
我假设您有以下型号:联系人,付款。