AngularJS でプログラム的に URL を作成する方法 質問する

AngularJS でプログラム的に URL を作成する方法 質問する

現在、私は AngularJS フレームワークを試しています。シングルページ アプリケーションへのディープ リンクには $route サービスを使用しています。

ここで、現在の URL の検索部分だけを変更して、アプリケーション内を移動したいとします。JavaScript の $location サービスを使用すると簡単に実行できますが、検索部分だけを置き換えた現在のルートから href 属性を構築するにはどうすればよいでしょうか。

手動で行う必要がありますか、それとも AngularJS でできる方法がありますか?

追加した:

もちろん、$location サービスには、このような URL を計算するためのすべてのメソッドがあります。ただし、$location はブラウザ ウィンドウを新しい URL にナビゲートするため、これを使用することはできません。

手動で URL を作成する場合、もう 1 つ複雑な点があります。従来の # メソッドが使用されているか、新しい History API が使用されているかを確認する必要があります。これに応じて、URL に # 記号を含めるかどうかが決まります。

ベストアンサー1

v1.4以降では$httpParamシリアライザーそのために:

angular.module('util').factory('urlBuilder', function($httpParamSerializer) {
    function buildUrl(url, params) {
        var serializedParams = $httpParamSerializer(params);

        if (serializedParams.length > 0) {
            url += ((url.indexOf('?') === -1) ? '?' : '&') + serializedParams;
        }

        return url;
    }

    return buildUrl;
});

使用法:

生成するにはhttp://url?param1=value1&param2=value2_1&param2=value2_2次のように呼び出します:

urlBuilder('http://url', { param1: 'value1', param2: ['value2_1', 'value2_2'] });

おすすめ記事