現在、私は 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¶m2=value2_1¶m2=value2_2
次のように呼び出します:
urlBuilder('http://url', { param1: 'value1', param2: ['value2_1', 'value2_2'] });