首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将两个适配器(LS和Rest适配器)用于模型(Foo),但在ember.js应用程序中使用基于路由的访问/使用适配器?

如何将两个适配器(LS和Rest适配器)用于模型(Foo),但在ember.js应用程序中使用基于路由的访问/使用适配器?
EN

Stack Overflow用户
提问于 2014-12-23 10:35:13
回答 1查看 159关注 0票数 0

当我在第一页中使用LS适配器到Foo模型时,我为该Foo模型定义/提到了DS.LSAdapter,并将模型数据从数据库获取到本地存储。之后,我可以访问/管理模型数据使用本地存储适配器在第一页。这里运转得很好。

接下来,我将导航到第二个页面,并定义/提到这个页面模型,用于Foo相同模型的Rest Adapter。REST调用这里不进行REST调用,因为问题是在第一个页面中启动了第一个LS适配器,而这个第二个页面没有为Foo模型启动REST适配器。如何在不刷新页面的情况下启动第二个页面中的Foo模型适配器?

请你给出解决办法来解决它。非常感谢。

模型

代码语言:javascript
复制
App.Foo = DS.Model.extend({     
id: DS.attr('id'),     
name: DS.attr('string')    
});

提到第一页中的本地存储适配器

控制器

代码语言:javascript
复制
App.FirstPageController = Ember.ObjectController.extend({

});

路由

代码语言:javascript
复制
App.FirstPageRoute = Ember.Route.extend({ 

    model: function() {  

        App.FooAdapter = DS.LSAdapter.extend({ namespace: 'ls-emberjs' });

        return this.store.find('foo');       

    }   

});

Hbs

代码语言:javascript
复制
<ul>
{{#each model}} 
    <li>fooID: {{id}} - Name: {{name}}</li>
{{/each}}
</ul>

在第二页中提到了其他适配器

控制器

代码语言:javascript
复制
App.SecondPageController = Ember.ObjectController.extend({

});

路由

代码语言:javascript
复制
App.SecondPageRoute = Ember.Route.extend({  

    model: function() {  

        App.FooAdapter = DS.RESTAdapter.extend({});

        return this.store.find('foo');       

    }   

});

Hbs

代码语言:javascript
复制
<ul>
{{#each model}} 
    <li>fooID: {{id}} - Name: {{name}}</li>
{{/each}}
</ul>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-12-23 22:57:02

嗯,我从这个问题中得出的结论是,基于"name“的适配器演绎只在加载时起作用,所以我认为您必须尝试这样的方法来动态地更改适配器。这是我第一次看到这一要求,并且limited也是有限的,所以它是一个试用版,我没有测试它:

代码语言:javascript
复制
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');       
    }   

});

如果任何成员有更好的解决方案..。

附注:我被推上了这个帖子,因为现在可以理解作者. :)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27618600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档