76
<a href="#/search?query={{address}}" ng-repeat="address in addresses">
  {{address}}
</a>

私が正しく理解している場合、URL エンコードされていないリンクを生成します。エンコードする適切な方法は何#/search?query={{address}}ですか?

住所の例は1260 6th Ave, New York, NY.

4

5 に答える 5

111

encodeURIComponentjavascriptでネイティブを使用できます。また、ストリングフィルターにして活用することもできます。

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

于 2013-01-24T23:49:55.447 に答える
23

で定義されていない#/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

于 2015-07-22T09:49:06.937 に答える
13

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>
于 2015-02-26T16:29:07.743 に答える