我只是想$location.path()
在我的控制器中使用,还要传递自定义变量作为参数。所以我猜看起来像这样:
$scope.parameter = 'Foo';
$location.path('/myURL/' + $scope.parameter);
但这是行不通的。有谁知道该如何在Angular中完成?
Answers:
要添加参数,您应该使用$location.search()
method:
$location.path('/myURL/').search({param: 'value'});
$location
方法是可链接的。
这产生:
/myURL/?param=value
$location.path('/myURL').search({param: 'value'});
将参数添加到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;
例如,如果您需要在URL中输入一个或多个参数:
$location.path('/path').search({foo: 'valueFoo', baz:'valueBaz'})
您网址中的代表
/path?foo=valueFoo&baz=valueBaz
要在另一个控制器中获取参数:
var urlParams = $location.search();
urlParams.foo will return valueFoo
urlParams.baz will return valueBaz
function pathToSomewhere() {
$stateParams.name= vm.name; //john
$stateParams.phone= vm.phone; //1234
$stateParams.dateOfBirth= getDoB(); //10-10-1990
$location.path("/somewhere/").search($stateParams);
};
这导致网址
http://middle-of-nowhere.com/#/somewhere/?name=john&phone=1234&dateOfBirth=10-10-1990
这样,您不必手动在方括号内键入参数