2017-07-03 65 views
0

我在與AngularJS $位置服務的關係問題。我設置的網址,當我點擊一個按鈕:PARAMS與URL AngularJS

$location.path('pageNumber='+$scope.page+'&'+'pageSize='+$scope.pageSize); 

現在的問題是我怎麼能寫從URL變量,我怎麼可以檢查是否存在例如變量:pageSize的

+0

如果你綁使分頁採用了棱角分明檢查該 【如何做AngularJS傳呼?](https://stackoverflow.com/questions/ 10816073 /如何到DO尋呼功能於angularjs) –

+0

你設置你的$ locationProvider.html5Mode(真); –

回答

0

您需要使用$location.search()上重定向頁面的控制器。

$location.search()返回一個對象,由鍵作爲變量和值作爲其值的。所以,如果你寫你的查詢字符串這樣的:

?pageNumber=5&pageSize=10 

然後你就可以得到pageNumberpageSize這樣的價值,

$scope.pageNumber = $location.search().pageNumber; 
$scope.pageSize = $location.search().pageSize 

,您現在可以檢查是否存在這樣的

if(angular.isDefined($scope.pageNumber)){ 
    //true if pageNumber exist 
} 

if(angular.isDefined($scope.pageSize)){ 
////true if pageSize exist 
} 

一想到這裏要考慮的是,這不會與角hashbang工作。您將獲得$location.search()的空值(對象)。這時,你需要在你的配置明確定義此:

moduleName.config(['$locationProvider', function($locationProvider){ 
    $locationProvider.html5Mode(true);  
}]); 

OR

如果你不想因爲你需要刷新頁面服務器的路由,那麼你可以使用JavaScript的方式來使用html5Mode得到的查詢字符串象下面這樣:

function getQueryString(name) { 
    var url = window.location.href; 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
     results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
} 

和你的控制器中,你需要初始化這樣

$scope.pageNumber = getQueryString('pageNumber'); 
$scope.pageSize = getQueryString('pageSize'); 

,現在您可以檢查它是否存在這樣的

if(angular.isDefined($scope.pageNumber)){ 
    //true if pageNumber exist 
} 

if(angular.isDefined($scope.pageSize)){ 
////true if pageSize exist 
} 
+0

是否設置了您的$ locationProvider.html5Mode(true); –

+0

我糾正: product.config([ '$ locationProvider',函數($ locationProvider){ \t $ locationProvider.html5Mode({啓用 :真實, requireBase:假 });} ]); 現在我有問題,爲什麼當我點擊導航鏈接URL會改變,但網站不改變,只有刷新後? – Turqus

+0

你需要這樣當頁面被刷新該服務器路由訪問定義路由在你的服務器上的所有網頁,並返回角的母版頁,你有NG-視圖(或UI視圖)的路徑 –