当使用Angular JS和Laravel删除注释时,被重定向到默认的应用路由


Gets redirected to default app route when deleting comment using Angular JS and Laravel

我正在使用Laravel和AngularJS开发一个应用程序,用户可以在其中编写和删除他们的评论。

在主屏幕上,用户可以查看和删除他/她的所有评论,当他们这样做时,列表应该更新。

我的问题是,当我按下删除按钮时,我被重定向到默认路由的登录页面。

$routeProvider.otherwise({ redirectTo : '/login' });

我正在使用laravels资源控制器

Route::resource('comment', 'CommentController');

当我再次进入主页时,评论被成功删除。

我的评论服务使用这个来删除评论:

app.factory('CommentService', function($http) {
  return {
    destroy: function(id) {
      return $http.delete('comment/' + id);
    }
  };
});

在home控制器中,我创建了这个函数来删除注释。

app.controller('homeController', function($scope, $location, AuthenticationService, CommentService) {
  $scope.deleteComment = function(id) {
    CommentService.destroy(id).success(function() {
      CommentService.get().success(function(data) {
        $scope.comments = data;
        $scope.order = 'end_date';
      });
    });
  };

当我删除评论时,如何防止网站重定向到登录页面?

最好是重定向到最近的页面,如果我登录,如果我没有,我应该重定向到登录页面。(例如,如果我在主页,那么如果我在url中键入不存在的内容或删除评论,我将被重定向到主页)

登录系统是由David Mosher根据这些教程创建的:

Angular JS简介

End to End with Angular JS

Angular JS的安全性

不确定你是否已经弄清楚了,但是如果有人在这里着陆,下面一件事可能是负责的(并且在我刚刚调试完的代码中):

<a href="#" ng-click="deleteComment()">x</a>

这将运行deletecomement并遵循路由#。添加href="#"(或href="")是一个坏习惯,<a></a>可以不使用href,在这种情况下,应该这样做。所以不需要重定向也可以:

<a ng-click="deleteComment()">x</a>

希望它能帮助那些降落在这里的人;)