在Angular的$ location.path内部传递参数


88

我只是想$location.path()在我的控制器中使用,还要传递自定义变量作为参数。所以我猜看起来像这样:

$scope.parameter = 'Foo';

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

但这是行不通的。有谁知道该如何在Angular中完成?

Answers:


183

要添加参数,您应该使用$location.search()method:

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

$location方法是可链接的

这产生:

/myURL/?param=value

检查拼写,大小写及其绑定
mohsen dorparasti

有什么办法可以转换为url看起来像/ myUrl / value而不是/ myURL /?param = value吗?
AzzyDude

1
您可以使用.Path('/ myURL /'+ value)。但是现在不再称为parameter了。
mohsen dorparasti

2
我必须删除结尾的/才能使其正常工作。这段代码是工作副本 $location.path('/myURL').search({param: 'value'});
bodagetta 2014年

38

将参数添加到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

13

例如,如果您需要在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

2
  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

这样,您不必手动在方括号内键入参数


我假设您在控制器上注入了$ stateParams,以使其正常工作。
FilipeG
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.