2015-03-02 31 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

相關問題