如何在路由或控制器中访问RESTAdapter的主机和命​​名空间?

时间:2013-12-04 23:22:57

标签: ember.js ember-data

我在一些控制器和路由中使用了一些自定义AJAX请求,例如:

 var loginRoute = Ember.Route.extend({

   actions: {

     submitLogin: function(user, pass) {

       var data = { username: user, password: pass };

       Ember.$.post('http://192.168.2.10/api/v1/login', data).then();
     }

   }
 });

这很好用,但在开发时我可能有不同的IP(例如更换路由器) 我希望能够访问我在扩展RESTAdapter时定义的URL(主机+命名空间),这样我只需要更改host和/或namespace一次,而不是每次我做自定义ajax请求的地方。

 App.ApplicationAdapter = DS.RESTAdapter.extend({
   host: 'http://192.168.2.10',
   namespace: 'api/v1'
 });

1 个答案:

答案 0 :(得分:26)

证明您可以通过this.store.adapterFor('application')

从商店访问适配器

新的submitLogin方法可能如下所示:

 submitLogin: function(user, pass) {

   var data = { username: user, password: pass },
       host = this.store.adapterFor('application').get('host'),
       namespace = this.store.adapterFor('application').namespace,
       postUrl = [ host, namespace, 'login' ].join('/'); // http://192.168.2.10/api/v1/login

   Ember.$.post(postUrl, data).then();
 }