2014-03-27 27 views
80

我只是想在我的控制器中使用$location.path(),但也傳遞一個自定義變量作爲參數。因此,這將是這個樣子我想:

$scope.parameter = 'Foo'; 

$location.path('/myURL/' + $scope.parameter); 

但是,這並不工作。任何人都知道這應該在Angular中完成嗎?

回答

161

添加參數,你應該使用$location.search()方法,以便:

$location.path('/myURL/').search({param: 'value'}); 

$location方法可鏈接

此產品:

/myURL/?param=value 
+0

檢查拼寫,大寫/小寫及其綁定 –

+0

有沒有什麼辦法,以使該轉換該網址看起來像/ myUrl /值而不是/ myURL /?param = value? – AzzyDude

+1

您可以使用.Path('/ myURL /'+ value)。但它不再被稱爲參數。 –

37

的另一種方式來參數添加到URL是:

$location.path('/myURL/'+ param1); 

,你可以定義路線myPage.html下:

config(['$routeProvider', function ($routeProvider) { 
     $routeProvider.when('/myURL/:param1', { 
      templateUrl: 'path/myPage.html', 
      controller: newController 
      }); 
    }]); 

參數然後可以在newController中訪問,如下所示:

var param1= $routeParams.param1; 
+1

這個答案是添加查詢參數還是路由屬性? – Phil

8

例如,如果你需要把你的URL的一個或多個參數:

$location.path('/path').search({foo: 'valueFoo', baz:'valueBaz'}) 

在您的網址將代表

/path?foo=valueFoo&baz=valueBaz 

要獲得PARAMS在另一個控制器:

var urlParams = $location.search(); 


urlParams.foo will return valueFoo 

urlParams.baz will return valueBaz 
2
function pathToSomewhere() { 
    $stateParams.name= vm.name; //john 
    $stateParams.phone= vm.phone; //1234 
    $stateParams.dateOfBirth= getDoB(); //10-10-1990 

    $location.path("/somewhere/").search($stateParams); 

    }; 

這將導致URL

http://middle-of-nowhere.com/#/somewhere/?name=john&phone=1234&dateOfBirth=10-10-1990 

這樣你就不必括號內手動輸入了參數

+0

我假設你有$ stateParams在你的控制器注入這個工作。 – FilipeG