2015-01-22 2 views
3

Update2:

$ место только для нг. так $location.search является поиск Нг это разобрать URL из знака как # или #!.

но $window.location обрабатывать Брауэр URL

в моем вопросе, первый URL, поиск нг пуст и второй URL, поиск Нг {код & состояние}

это правильно?

Update1:

я нашел *$window.location* получил правильные данные. *$location* переопределить все вещи?

Вопрос я использовать углового-UI-маршрутизатор в моем проекте. и я хочу, чтобы получить строку поиска из URL, вроде этого: http://localhost:8080/?code=123456&state=auth#/api/oauth2_authorize в app.config, я установил:

$stateProvider.state("oauth2_authorize", { 
      url: "/api/oauth2_authorize?code&state", 
      template: "", 
      controller: function($location) { 
         var search = $location.search(); 
      } 
     }) 

я думаю, что поиск будет { code : 123456; state:auth} но нет. Я пытаюсь изменить URL-адрес: http://localhost:8080/#/api/oauth2_authorize?code=123456&state=auth и он работает.

Кто-нибудь может сказать мне, почему? html5mode является false. Я проверяю документ angularjs, и $ location Пример показать, что я могу получить строку поиска от и URL. , и я пытаюсь использовать $ urlRouterProvider, но он все еще пуст.

что я могу сделать?

+1

насчет '$ stateParams'? – PSL

+0

@PSL извините, он также пуст при первом URL-адресе. вторая работа с URL. – GeminiYellow

+0

Я предполагаю, что он должен работать, если вы включите HTML5model true. Вы не можете включить его? –

ответ

1

Потому что, если вы установили html5mode в false, все ваши URL должны иметь #. Даже если в вашем состоянии url у вас нет #.

По этой причине http://localhost:8080/?code=123456&state=auth#/api/oauth2_authorize не работает и http://localhost:8080/#/api/oauth2_authorize?code=123456&state=auth это делает.

Проверить angularjs docs для $location и URLs

+0

@GeminiYellow np, вы в порядке? на ваши вопросы ответили? – levi

+0

Я пытаюсь установить html5mode в true, но состояние ui.router не может перенаправить URL. что-то нужно добавить? – GeminiYellow

+0

@GeminiYellow какие URL-адреса вы используете? дайте мне пример. – levi

0

Я думаю, что-то не так с AngularJs версии, которую вы используете. Какая версия вы используете? относятся следующие ссылки указывают на тот же вопрос и зафиксировать HTML5Mode = истинный https://github.com/angular/angular.js/issues/6198

Или просто пройти через следующие страницы, может быть полезным, чтобы решить проблему. https://github.com/angular/angular.js/issues/5964

https://github.com/angular/angular.js/issues/4607

Смежные вопросы