2013-12-21 153 views
0

我已经使用Ember/Ember数据超过5个月了,唯一引起我最大悲痛的是Ember Data缓存所有内容。没有办法阻止它。我知道有像model.reload()这样的方法,并且使用查询参数的任何东西都会检索到未缓存的内容,但是我经常需要手动从数据存储中卸载记录。如何防止Ember Data中的缓存

数据被用户以外的用户修改是很常见的。如果没有Web套接字的帮助,始终将Ember数据保持在同步状态,则需要一种简单的方法从服务器加载更新副本的数据。同样,如果没有网络套接字,客户端就不可能知道可用数据发生了变化。

如果在Ember中有其他模型框架可以帮助解决这个问题,我也会对这些问题感兴趣。

谢谢!

回答

2

虽然我不推荐这个,但我认为缓存是最好的部分\结束咆哮。您可以创建一个自卸载模型(只需在卸载时意识到,关联的记录将会看到该记录消失)。

App.UnloadingModel = DS.Model.extend({ 
    unloadTimespan: undefined, 
    _scheduledUnload: false, 
    _unloadWatcher: function(){ 
    var time = Em.get(this.constructor,'unloadTimespan'), 
     loaded = this.get('isLoaded'), 
     scheduledUnload = this.get('_scheduledUnload'); 

    if(!scheduledUnload && time && loaded){ 
     this.set('_scheduledUnload', true); 
     Em.run.later(this, this.unloadRecord, time); 
    } 
    }.observes('isLoaded').on('init') 
}); 

App.Color = App.UnloadingModel.extend({ 
    color: DS.attr() 
}); 


App.Color.reopenClass({ 
    unloadTimespan: 4000 
}); 

http://emberjs.jsbin.com/OxIDiVU/70/edit