2016-03-01 63 views
0

我有一個使用AngularJS開發的SPA應用程序。訪問應用程序可以通過兩種方式:角度javascript清理URL

1)通過輸入地址(例如)www.example.com,或

2)通過點擊喜歡http://www.example.com?do=this&param=1234

當應用程序被啓動的鏈路上,它會檢查URL,如果找到合適的參數,它會提示用戶登錄/註冊,然後訪問應用程序中的特定頁面,訪問者應該執行一些與參數1234的動作this有關的活動。

遍歷通過網頁是由JavaScript命令處理:

$window.location.href="#/other_page;

到目前爲止,這工作正常,除了URL與參數一起保存。因此,每當應用程序決定其需要去到另一頁的URL(在瀏覽器的地址欄中)看起來像:

http://www.example.com?do=this&param=1234#/other_page

這是搞亂了應用程序的行爲。

我的問題是:一旦我能夠從原來的URL中提取接收到的參數,我想乾淨的網址,並用其正常的內容進行,這將是這樣的:

http://www.example.com#/other_page

這是如何實現的?

在此先感謝。

回答

0

使用$ location服務清除瀏覽器地址欄中的搜索查詢參數。

語法是:

$location.search({}); 

對於實例完成後登錄或註冊頁面。

$scope.login = function(){ 
    // Check your logic and clear search params 
    if($routeParams && $routeParams.src) 
    { 
     $location.search({}); 
     $location.path($scope.baseurl+$routeParams.src); 
    } 
}; 

這裏我使用$ routeParams服務,您也可以查看$ window.location.search

+0

哇!這很快!謝謝@PrakashA。稍後再測試並通知您。 – FDavidov

+0

你好@PrakashA,你的解決方案也不起作用(與上面Vivek建議的結果非常相似)。 – FDavidov

0

可以使用$location服務。它說:

地址欄中URL的更改反映到$ location服務中,並且$ location的更改反映到瀏覽器地址欄中。

所以,基本上你可以這樣做:

$location.path('other_page')

應清除URL,並設置這個路徑來代替。

+0

這也是快!我會稍後再測試並告訴你。謝謝@vivek。 – FDavidov

+0

你好@vivek。我只是測試了你的解決方案,不幸的是,它不像描述的那樣工作。 – FDavidov

+0

@FDavidov請提供[plnkr](https://plnkr.co/)鏈接。 – vivek

0

剛剛找到了一個工作解決方案。我使用下面的命令:

$window.location.href = location.protocol   + 
         "//"      + 
         location.host    + 
         "/index.html#/other_page" ; 

哪個技巧。也許不是最優雅的,但它可以根據需要運作。

謝謝你們(@vivek和@prakashA)的支持。

+0

那麼....它的作品,但它沒有。我會打開一個新的問題,更詳細的問題[這裏](http://stackoverflow.com/questions/35749052/angularjs-spa-application-cleaning-url)。 – FDavidov