<a href="#/search?query={{address}}" ng-repeat="address in addresses">
{{address}}
</a>
私が正しく理解している場合、URL エンコードされていないリンクを生成します。エンコードする適切な方法は何#/search?query={{address}}
ですか?
住所の例は1260 6th Ave, New York, NY
.
encodeURIComponent
javascriptでネイティブを使用できます。また、ストリングフィルターにして活用することもできます。
escape
これがフィルターの作成例です。
js:
var app = angular.module('app', []);
app.filter('escape', function() {
return window.encodeURIComponent;
});
html:
<a ng-href="#/search?query={{address | escape}}">
ng-href
(更新:プレーンの代わりに使用するKarliesの回答に適応href
)
で定義されていない#/search?query=undefined
場合、@Toshのソリューションが返されますaddress
<a ng-href="#/search?query={{address | escape}}">
クエリの代わりに空の文字列を取得したい場合は、ソリューションを拡張する必要があります
var app = angular.module('app', []);
app.filter('escape', function() {
return function(input) {
if(input) {
return window.encodeURIComponent(input);
}
return "";
}
});
これは、未定義の#/search?query=
場合に返されます。address
Tosh の答えには、フィルターのアイデアが正確に含まれています。そのようにすることをお勧めします。ただし、これを行う場合は、「href」ではなく「ng-href」を使用する必要があります。バインディングが解決される前に「href」をたどると、リンクが不良になる可能性があるためです。
フィルター:
'use strict';
angular.module('myapp.filters.urlEncode', [])
/*
* Filter for encoding strings for use in URL query strings
*/
.filter('urlEncode', [function() {
return window.encodeURIComponent;
}]);
見る:
<a ng-href="#/search?query={{ address | urlEncode }}" ng-repeat="address in addresses">
{{address}}
</a>