当我在第一页中使用LS适配器到Foo模型时,我为该Foo模型定义/提到了DS.LSAdapter,并将模型数据从数据库获取到本地存储。之后,我可以访问/管理模型数据使用本地存储适配器在第一页。这里运转得很好。
接下来,我将导航到第二个页面,并定义/提到这个页面模型,用于Foo相同模型的Rest Adapter。REST调用这里不进行REST调用,因为问题是在第一个页面中启动了第一个LS适配器,而这个第二个页面没有为Foo模型启动REST适配器。如何在不刷新页面的情况下启动第二个页面中的Foo模型适配器?
请你给出解决办法来解决它。非常感谢。
模型
App.Foo = DS.Model.extend({
id: DS.attr('id'),
name: DS.attr('string')
});提到第一页中的本地存储适配器
控制器
App.FirstPageController = Ember.ObjectController.extend({
});路由
App.FirstPageRoute = Ember.Route.extend({
model: function() {
App.FooAdapter = DS.LSAdapter.extend({ namespace: 'ls-emberjs' });
return this.store.find('foo');
}
});Hbs
<ul>
{{#each model}}
<li>fooID: {{id}} - Name: {{name}}</li>
{{/each}}
</ul>在第二页中提到了其他适配器
控制器
App.SecondPageController = Ember.ObjectController.extend({
});路由
App.SecondPageRoute = Ember.Route.extend({
model: function() {
App.FooAdapter = DS.RESTAdapter.extend({});
return this.store.find('foo');
}
});Hbs
<ul>
{{#each model}}
<li>fooID: {{id}} - Name: {{name}}</li>
{{/each}}
</ul>谢谢
发布于 2014-12-23 22:57:02
嗯,我从这个问题中得出的结论是,基于"name“的适配器演绎只在加载时起作用,所以我认为您必须尝试这样的方法来动态地更改适配器。这是我第一次看到这一要求,并且limited也是有限的,所以它是一个试用版,我没有测试它:
App.FirstPageRoute = Ember.Route.extend({
model: function() {
var adapter = DS.RESTAdapter.extend({});
this.set("store.adapter",adapter);
return this.store.find('foo');
}
});
App.SecondPageRoute = Ember.Route.extend({
model: function() {
var adapter = DS.LSAdapter.extend({ namespace: 'ls-emberjs' });
this.set("store.adapter",adapter);
return this.store.find('foo');
}
});如果任何成员有更好的解决方案..。
附注:我被推上了这个帖子,因为现在可以理解作者. :)
https://stackoverflow.com/questions/27618600
复制相似问题