【发布时间】:2016-01-11 17:57:56
【问题描述】:
是否可以从 ember 商店或 Ember 应用程序的其他地方动态选择适配器?我正在为我的 ember 应用程序实现离线行为,当离线时,该应用程序应利用离线适配器从浏览器存储中提取数据。
把这个逻辑放在哪里最好?
我知道 DS.Store 上有一个适配器属性,您可以在其中指定自定义适配器 (http://emberjs.com/api/data/classes/DS.Store.html#property_defaultAdapter),但我无法让它工作。
例子:
app/adapters/custom.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.Store.extend({
adapter: 'custom',
});
app/store.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.Adapter.extend({
pathForType: function(type) {
debugger; //Never goes in here
},
});
我想做的是这样的:
export default DS.Store.extend({
offlineService: Ember.inject.service('offlineService') //Service to detect if app has network connection
adapter: function() {
if (this.get('offlineService.isOffline') {
return 'offlineAdapter'
} else {
return 'application'
}
}.property('offlineService.isOffline')
});
类似的事情有可能吗?
谢谢!
【问题讨论】:
-
如果您想要强大的离线行为,请考虑
ServiceWorker。否则,我认为您正在适配器中寻找if语句。
标签: ember.js ember-data