2015-10-03 215 views
0

我有忘記密碼的形式,當用戶進入它撞擊後端的電子郵件併發送的電子郵件鏈接用戶,如下在其上。AngularJS忘記密碼

enter image description here

用戶點擊該鏈接,這將調用後端服務上。我如何通過angular控制此網址?所以,基本上這是調用後端資源,但我希望這個URL也可以在前端處理。

如果這個問題不是那麼清楚,誰能告訴我一個例子的忘了AngularJS和NodJs或任何後端密碼實現。

+0

爲什麼你不改變以下列方式的鏈接:http://本地主機:3000 /#/ resetpassword/55356236t663623/ 並擁有這條路線與routeProvider或stateProvider –

+0

@RajuBera:???? – Shane

+0

你爲什麼不更改如下方式鏈接:http://本地主機:3000 /#/ resetpassword/55356236t663623並有路線這在你與routeProvider或stateProvider –

回答

3

如果你可以改變在電子郵件中的鏈接,然後改變它在以下方式:

http://localhost:3000/#/resetpassword/<token> 

現在在你的角路線,你需要聽這條路線如下:

angular.module('myApp', ['ngRoute']) 

.controller('ResetPasswordController', function($scope, $route, $routeParams, $location) { 
    //password resetting functionality 
}) 
.config(function($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('/resetpassword/:token', { 
    templateUrl: 'reset.html', 
    controller: 'ResetPasswordController', 
    resolve: { 
     // Call the backend service to check if the token is valid 
     verifyToken: function($q, $route) { 
     var deferred = $q.defer(); 
     $http({ 
      method: 'GET', 
      url: '/reset/' + $route.current.params.token 
     }).success(function (data) { 
      deferred.resolve(data); 
     }).error(function (msg) { 
      deferred.reject(msg); 
     }); 

     return deferred.promise; 
     } 
    } 
    }) 
}); 
+0

讓我們拿這個失敗,我得到deferred.reject(味精),我可以在我的控制器處理這個任何機會? – Shane

+1

角路由的解析在路由哈希更改之前執行,它們可以作爲使用相同名稱的服務傳遞給控制器​​。現在,如果決心返回一個承諾,那麼角將等待承諾解決,然後它將繼續流。如果承諾被拒絕,那麼路由更改不會發生。 在你的情況,如果你想要做的還是從控制器的一些功能,那麼,而不是拒絕你需要解決與正確的參數的承諾。 –

+1

這個答案有幫助嗎? –