2015-10-03 160 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

这个答案有帮助吗? –