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