2015-03-02 14 views
0

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

+0

你为什么没有在这里发布你的代码? – Satpal 2015-03-02 07:48:11

+1

为什么我最贴在这里? – 2015-03-02 07:58:41

+0

寻求调试的问题有助于__(“为什么这个代码不工作?”)__必须包含所需的行为,特定的问题或错误以及在问题本身中重现__it所需的最短代码.__没有明确问题陈述的问题对其他读者没有用处。请参阅:[如何创建一个最小,完整和可验证的示例。](http://stackoverflow.com/help/mcve) – Satpal 2015-03-02 08:11:16

回答

2

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

说,例如:

你点击控制面板,它记录空字符串。

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

现在,您目前的网址是/view1 当你点击控制面板,该reloading函数被调用,它记录了当前的URL,这是/view1,然后导航到新的URL /view2

P.S:试试这个:

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

2

出现这种情况是因为你之前的实际路由改变调用内部ng-clickreloading功能。

更改您的控制器,如:

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

}]); 

并在控制台中观察输出 - 我想你会得到更好的理解发生了什么这样的。

+0

但是当我调用重装函数时在/ view2状态我不明白为什么?你能解释更多吗? – 2015-03-02 07:55:15

+0

我不知道我理解你。我其实只是回答你的问题。 – PrimosK 2015-03-02 07:59:45

+0

感谢您的解决方案:) – 2015-03-02 08:25:42

相关问题