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