2015-09-29 100 views

回答

0

我張貼更多的細節同樣的問題,並找到了一個完美的迴應。請在這裏看到DavidL在我的問題的回答:

Reading URL parameters in AngularJS - A simple way?

謝謝大家誰幫助我在這個線程;也許我原來的問題中沒有包含足夠的細節。

1

這將你的查詢轉換成一個對象

var queryData = url.split('?')[url.split('?').length - 1].split('&').reduce(function(prev, curr){ 
    var fieldName = curr.split('=')[0]; 
    var value = curr.split('=').length > 1 ? curr.split('=')[1] : ''; 
    prev[fieldName] = value; 
    return prev 
}, {}); 

然後你就可以通過queryData.product訪問它們,例如。 不是角度,但它是一個解決方案。

對角的方式,你可以使用$ location.search()這裏描述http://www.angulartutorial.net/2015/04/get-url-parameter-using-angular-js.html

+0

嗨@TitusPopovici。同樣的問題也是如此。這似乎只有在我的網址以#/結尾時才起作用,如example.com/mypage.html#/?product=1234®ion=4&lang=en。你知道這是否有解決方法嗎?後者不像一個典型的URL。 – Ricky

+0

不是我知道的,對於角度的方式。你可以製作你自己的角度服務,它使用我上面寫到的不是角度路徑的URL的函數(用#/) –

1

可以使用$位置服務。例如:

angular.module('parameters', []).run(['$location', 
 
    function($location) { 
 
    var params = $location.search(); 
 
    } 
 
]);

+0

Thanks @roger。如果我的網址以http://example.com/mypage.html#/?product=1234®ion=4&lang=en中的#/結尾,這似乎只能起作用。有沒有解決方法? – Ricky

+0

您使用的是html5Mode嗎?因爲你的網址沒有前綴「#/」? 「$ location.search();」以同樣的方式在html5Mode上工作。 如果沒有,你的參數總是必須在「#/」前面後面,這是角度方式,你的URL總是用「#/」來完成。 – roger

+0

Thanks @roger。我讀了關於html5mode,甚至看到了文檔,但我對如何實現這一點感到困惑。它說使用$ locationProvider,但我在哪裏設置?它會在控制器中嗎?因爲我需要它在全局生效 – Ricky