$ location.path让我以前的路径

时间:2015-03-02 07:44:43

标签: javascript angularjs url-routing angular-ui-router

我是angularjs的新手,我想获得当前的状态网址,但是当我使用$location.path()函数时,它给我最后一个状态,我点击它,例如我在点击时点击它在仪表板上,我点击帐户后,我得到空字符串,点击仪表板后,我会得到帐户的名称网址(/view1),而不是(/view2)为什么会出现这种情况? 这是我的傻瓜http://plnkr.co/edit/EHkgk0x48JsrNeX2FqgG?p=preview

2 个答案:

答案 0 :(得分:2)

这是因为您在实际路线更改之前在reloading内调用ng-click函数。

将控制器更改为:

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())
    }

}]);

并观察控制台中的输出 - 我猜你会更好地了解这种情况。

答案 1 :(得分:2)

您在单击按钮的网址上处理了reloading()功能。之后才进入下一页。所以它不会写下一页的位置。

说,例如:

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

你点击了帐户,它没有做任何事情,因为没有指定点击处理程序。

现在,您当前的网址为/view1 单击控制板时,会调用reloading函数,它会记录当前网址/view1,然后导航到新网址/view2

P.S:试试这个:

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