Как вы получаете доступ к хосту и пространству имен RESTAdapter внутри маршрута или контроллера?

У меня есть несколько пользовательских запросов 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 (например, смены маршрутизаторов) и я хотел бы иметь доступ к URL-адресу (пространство имен хостов +), которое я определил, когда я расширил RESTAdapter, так что мне нужно только один раз изменить host и/или namespace, а не каждое место, где я это делаю пользовательский запрос ajax.

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

Ответы

Ответ 1

вы можете получить доступ к адаптеру из магазина через 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();
 }