$location.path 获取之前的路径

$location.path get me previous path

我是 angularjs 的新手,我想获得当前状态 url 但是当我使用 $location.path() 功能时,它会给我最后的状态,我点击它例如在我最初点击仪表板时创建的这个 plunker 在我点击帐户后得到空字符串,在我单击仪表板后它让我得到帐户 url 的名称 (/view1) 而不是 (/view2)为什么会这样? 这是我的笨蛋 http://plnkr.co/edit/EHkgk0x48JsrNeX2FqgG?p=preview

发生这种情况是因为您在 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())
    }

}]);

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

您的 reloading() 函数在您单击按钮的 url 上处理。只有在那之后它才会进入下一页。所以它不会写下一页的位置。

比如说:

您单击仪表板,它记录空字符串。

您点击帐户,它不会执行任何操作,因为未指定点击处理程序。

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

P.S:试试这个:

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