URL-адрес запроса, когда html5Mode (true)

Я включил $locationProvider.html5Mode(true).

Однако у меня есть django в качестве бэкэнда. На /logout/ мне нужно запросить урл напрямую на сервер как бы $locationProvider.html5Mode(false) или просто заходя: example.com/logout/ а не во фронд.

Какую команду angular я должен использовать, чтобы «заставить» запрашивать URL-адрес /logout/ с сервера?


person Diolor    schedule 18.10.2013    source источник
comment
Один из способов — просто использовать window.location = example.com/logout/, который обходит AngularJS.   -  person LostInComputer    schedule 18.10.2013
comment
@LostInComputer, можете ли вы также создать мне пример с оптимальным обработчиком (я думаю, либо $watch, либо $location, либо $routeProvider)? Спасибо   -  person Diolor    schedule 18.10.2013
comment
Почему вам нужно установить URL напрямую? Что ты пытаешься сделать?   -  person davekr    schedule 18.10.2013
comment
@davekr У меня в urls.py url(r'^logout/$', logout, name='logout'),. Вид: def logout(request): auth_logout(request);return HttpResponseRedirect('/');. Поэтому мне нужен способ авторизации пользователя в этом представлении (я использую питоновскую социальную аутентификацию если это имеет значение).   -  person Diolor    schedule 18.10.2013
comment
@Diolor Так почему бы не вернуть json с URL-адресом перенаправления из представления, а затем использовать его во внешнем интерфейсе и изменить $location на URL-адрес?   -  person davekr    schedule 18.10.2013
comment
Пример @davekr, пожалуйста?   -  person Diolor    schedule 18.10.2013
comment
В поле зрения: return HttpResponse(json.dumps({"redirect":"/"}), mimetype='application/javascript') В JS: $http.get("logout/").success(function(data) {$location.path(data.redirect)})   -  person davekr    schedule 18.10.2013


Ответы (1)


Изменить. Оказывается, есть два возможных решения:

1) См. раздел Указание Angular Js игнорировать определенный маршрут

2) Или используйте $window.location.

Вот пример:

$scope.onLogoutClicked = function() {
    $window.location = "http://google.com";
}

Разница между $window.location и $location

Когда следует использовать $location?

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

Чего он не делает? Он не вызывает полной перезагрузки страницы при изменении URL-адреса браузера. Чтобы перезагрузить страницу после изменения URL-адреса, используйте API более низкого уровня, $window.location.href.

Примечания:

  • $window — это оболочка для окна, поэтому его можно тестировать.
  • $window.location = "URL" и $window.location.href = "URL" делают то же самое
person LostInComputer    schedule 18.10.2013