$location.path获取上一个路径

$location.path get me previous path

本文关键字:上一个 路径 获取 path location      更新时间:2023-09-26

我是angularjs的新手,我想获得当前状态的url,但当我使用$location.path()函数时,它会给我最后一个点击它的状态——例如,在我最初点击仪表板时创建的这个plunker中,我在点击账户后会得到空字符串,在点击仪表板后,它会得到账户的名称url (/view1)而不是(/view2)——为什么会发生这种情况?这是我的plunkerhttp://plnkr.co/edit/EHkgk0x48JsrNeX2FqgG?p=preview

您的reloading()函数在您单击按钮的url上进行处理。只有在处理完后,它才会进入下一页。因此它不会写入下一页的位置。

例如:

你点击Dashboard,它会记录空字符串。

当你点击账户时,它不会做任何事情,因为没有指定点击处理程序。

现在,您当前的url是/view1当您单击Dashboard时,会调用reloading函数,它会记录当前url,即/view1,然后导航到新的url /view2

p.S:试试这个:

单击仪表板,它将记录空字符串。现在,您在/view2中的当前url再次单击仪表板,它将记录/view2

发生这种情况是因为您在实际路由更改之前调用了ng-click内部的reloading函数。

更改您的控制器,如:

app.controller('MainCtrl', ['$scope', '$location', function($scope, $location){ 
    // Fired when the transition begins. 
    $scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ 
      console.log("State changed: " +  $location.path())
    })
    // Fired on click:
    $scope.reloading = function(){
      console.log("On click: " + $location.path())
    }
}]);

并观察控制台中的输出——我想你会更好地了解这种方式发生的事情。