Angularの$ location.path内にパラメータを渡す


88

私は$location.path()コントローラーで使用しようとしているだけでなく、カスタム変数をパラメーターとして渡しています。だからそれは私が推測するこのようなものになるでしょう:

$scope.parameter = 'Foo';

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

しかし、それはうまくいきません。これがAngularでどのように行われるべきか知っている人はいますか?

回答:


183

パラメータを追加するには、$location.search()メソッドを使用する必要があります。

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

$locationメソッドは連鎖可能です。

この農産物:

/myURL/?param=value

スペルチェック、大文字と小文字、およびそのバインディング
mohsen dorparasti 2014年

これを変換してURLが/ myURL /?param = valueではなく/ myUrl / valueのようになるようにする方法はありますか?
AzzyDude 2014年

1
.Path( '/ myURL /' + value)を使用できますが、パラメーターとは呼ばれなくなりました。
mohsen dorparasti 2014年

2
これを機能させるには、末尾の/を削除する必要がありました。このコードは作業コピーです $location.path('/myURL').search({param: 'value'});
bodagetta

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に1つ以上のパラメータを含める必要がある場合:

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

あなたのURLで表す

/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);

  };

これはURLになります

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

これにより、ブラケット内にパラメーターを手動で入力する必要がなくなります。


これが機能するために、コントローラーに$ stateParamsが注入されていると想定しています。
FilipeG 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.