以编程方式访问RESTAdapter的主机地址

时间:2014-08-26 01:47:21

标签: ember.js ember-data

我想在控制器或组件中获取REST适配器的主机地址。

我正在使用Ember-CLI,我按如下方式设置了适配器:

export default DS.RESTAdapter.extend({
  host: 'http://localhost:9000'
});

我知道此问题已被问及herehere,但这些方法都不适用于最近的Ember 1.6.0。

我尝试了以下所有方法:

DS.RESTAdapter.prototype.url
DS.RESTAdapter.prototype.host
App.__container__.lookup('store:main').get('adapter.url')
App.__container__.lookup('store:main').get('adapter.host')
DS.defaultStore.adapter.url
DS.defaultStore.adapter.host

这样做有什么办法(不管多脏/黑客/恶心)?谢谢!

编辑:正确的答案是使用您可以从其他地方访问的值初始化适配器,例如下面指出的Kingpin2k。我最终创建了一个具有常量值的对象,并在两种情况下引用它。

1 个答案:

答案 0 :(得分:1)

App.__container__.lookup('adapter:application').host

示例:http://emberjs.jsbin.com/OxIDiVU/978/edit

老实说,您应该将其定义为应用程序中的属性,并在适配器中使用该属性,这样您就可以将其从应用程序中删除而无需执行此操作。

App = Ember.Application.create({
  applicationAdapterHost: '/foo'
});

App.ApplicationAdapter= DS.RESTAdapter.extend({
  host:App.applicationAdapterHost
});

如您所见,您可以随时使用App.applicationAdapterHost轻松抓取

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