Переписать URL в AngularJS Factory

0

Приложение, которое я разрабатываю, позволяет пользователям изменять IP-адрес сервера (где REST API). Этот адрес хранится в переменной, которая может быть изменена, но проблема в том, что при создании экземпляров службы базовый URL-адрес не может быть изменен. После этого ответа мне удалось изменить URL-адрес некоторых сервисов, но я не могу сделать то же самое для тех, у кого есть действия POST.

Я пробовал несколько конфигураций, но всегда есть проблема. Например, это:

// Services file
app.factory('Bookings', BookingsFactory)

function BookingsFactory($resource, GlobalVariables) {
    return $resource('http://:url/api/bookings/:id/', null, {url: '@url'});
}

//Controllers file
Bookings.save(booking, {url: GlobalVariables.IPServer});

Выдает это сообщение об ошибке "net :: ERR_NAME_NOT_RESOLVED", потому что URL-адрес запроса неверен: " http://api/bookings/? End_time = 2015-06-30T09: 30 & name = Reunion & room = 1 & start_time = 2015-06-30T09: 43 & start = true ".

Если я назову это так:

//Services file
app.factory('Bookings', BookingsFactory)

function BookingsFactory($resource, GlobalVariables) {
    return $resource('http://:url/api/bookings/:id/', {url: '@url'});
}

//Controllers file
Bookings.save({booking: booking, url: GlobalVariables.IPServer});

Я получаю ошибку 400 BAD REQUEST, и ответ запрашивает контент для всех необходимых полей: "Это поле обязательно".

Я использую AngularJS v1.3.13. Есть ли способ изменить базовый URL-адрес в каждом ходатайстве с помощью этого подхода, даже на запросы POST? Или даже лучше, есть ли способ обновить URL-адрес на каждой фабрике приложения после запуска приложения?

Теги:
rest
ionic

1 ответ

0

В приложении, над которым я работаю, я использую $ rootScope для хранения URL-адреса базового сервера для всех запросов. Я не знаю, если это хороший способ использовать $ rootScope или нет, но точно, что приложение работает.

К сожалению, я забыл добавить, что я могу изменить базовый URL-адрес во время работы приложения, что вам и нужно.

  • 0
    Извините, но это не сработало для меня. Я использую сервисы, которые затем внедряю в контроллеры, поэтому я думаю, что эти сервисы создаются при обслуживании приложения и поэтому не могут быть изменены после запуска приложения. Я попытался с rootScope, но это не сработало из-за этого.
  • 0
    Вы знаете, что службы могут принимать аргументы при вызове. Вы пытались отправить URL-адрес сервера в качестве аргумента для функций?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню