2015-08-11 4 views
4

Я пытаюсь получить сброс токена pw из ссылки в электронном сообщении сброса pw. Ссылка отправляет пользователя обратно к моему узлу/угловому приложению с токеном, который я пытаюсь получить.Получить параметры маршрута от url

Laravel API: шаблон электронной почты

  <td class="content"> 
       <a href="http://localhost:3000/reset-password?token={{$token}}">Reset Your Password</a> 
      </td> 

Узел/Угловая приложение: ResetPassword.ejs шаблон: Я использую угловой контроллер:

<div ng-controller="resetPasswordCtrl"> 
    ...stuff 
</div> 

сброса пароля Контроллер:

'use strict'; 

angular 
    .module('myApp') 
    .controller('resetPasswordCtrl', ['$scope', '$routeParams', '$location', function($scope, $routeParams, $location) { 

     console.log('ROUTE PARAMS', $routeParams); //object with a bunch of getters/setters 
     console.log('ROUTE PARAMS', $routeParams.token); //undefined 
     console.log('Location', $location.search('token')); //LocationHashbangUrl 
     console.log('Location', $location.search().token); //true 
     console.log('Location', $location.search()['token']); //true 
     console.log('Route current params', $route); //empty route object 

    }]); 

Для LocationHashbangUrl ($location.search('token')), я знаю, что получаю правильный URL-адрес с токеном, потому что это показывает $$ absUrl.

enter image description here

Почему я не смог получить token параметров с помощью одного из этих способов, показанных в контроллере?

+0

Что вы получили от youhn console.log ($ routeParams) 'only? – Erazihel

+0

@ Erazihel, см. Выше edit – Growler

+0

Можете ли вы опубликовать код своего маршрутизатора? Попробуйте использовать '$ route' вместо' $ routeParams', как этот 'console.log ($ route.current.params);' – Erazihel

ответ

0

Turns без использования html5/угловой маршрутизации, типичные методы

$location.search() 
$routeParams 

не будет работать.

Поскольку я передаю параметры и получаю доступ к моему узлу приложения извне (из ссылки электронной почты, распространяемой из laravel), мне нужно было проанализировать URI с помощью javascript.

Я нашел this resource, что делает его легким. Итак, следующие работы:

'use strict'; 

angular 
    .module('myApp') 
    .controller('resetPasswordCtrl', ['$scope', '$window', function($scope, $route, $window) { 

     var getURIParams = function(variable) { 
      var query = $window.location.search.substring(1); 
      var vars = query.split('&'); 
      for (var i = 0; i < vars.length; i++) { 
       var pair = vars[i].split('='); 
       if (decodeURIComponent(pair[0]) == variable) { 
        return decodeURIComponent(pair[1]); 
       } 
      } 
      console.log('Query variable %s not found', variable); 
     }; 
     console.log('VAR', getURIParams('token')); //my token param 
    }]); 
0

Можете ли вы разместить свой $ routeProvider? Вы могли бы просто добавить токен в качестве параметра, а затем $ routeParams.token будет делать то, что вы хотите. Что-то вроде этого:

$routeProvider.when('/reset-password/:token') 

Это будет означать ваш пароль сброса URL будет выглядеть следующим образом, хотя:

http://localhost:3000/reset-password/{{$token}} 
+0

Кип, я не использую угловую маршрутизацию для своего приложения. Я использую узел. Токен возвращается из моего Laravel API через ссылку. – Growler

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