<a href="#/search?query={{address}}" ng-repeat="address in addresses">
{{address}}
</a>
génère des liens qui ne sont pas encodés en URL si je comprends bien. Quelle est la bonne façon d'encoder #/search?query={{address}}
?
Exemple d'adresse est 1260 6th Ave, New York, NY
.
Vous pouvez utiliser le encodeURIComponent
natif en javascript. Vous pouvez également en faire un filtre de chaîne pour l'utiliser.
Voici l'exemple de la création du filtre escape
.
js:
var app = angular.module('app', []);
app.filter('escape', function() {
return window.encodeURIComponent;
});
html:
<a ng-href="#/search?query={{address | escape}}">
(mis à jour: adaptation à la réponse de Karlies qui utilise ng-href
au lieu de plain href
)
@ La solution de Tosh retournera #/search?query=undefined
si address
n’est pas défini dans
<a ng-href="#/search?query={{address | escape}}">
Si vous préférez obtenir une chaîne vide à la place de votre requête, vous devez étendre la solution à
var app = angular.module('app', []);
app.filter('escape', function() {
return function(input) {
if(input) {
return window.encodeURIComponent(input);
}
return "";
}
});
Cela retournera #/search?query=
si address
n'est pas défini.
Vous pouvez utiliser le filtre encodeUri: https://github.com/rubenv/angular-encode-uri
Ajoutez angular-encode-uri à votre projet:
bower install --save angular-encode-uri
Ajoutez-le à votre fichier HTML:
<script src="bower_components/angular-encode-uri/dist/angular-encode-uri.min.js"></script>
Référencez-le comme une dépendance pour votre module d'application:
angular.module('myApp', ['rt.encodeuri']);
Utilisez-le dans vos vues:
<a href="#/search?query={{address|encodeUri}}">
La réponse de Tosh a exactement l'idée du filtre. Je recommande de le faire juste comme ça. Cependant, si vous faites cela, vous devriez utiliser "ng-href" plutôt que "href", car suivre le "href" avant la résolution de la liaison peut entraîner un mauvais lien.
filtre:
'use strict';
angular.module('myapp.filters.urlEncode', [])
/*
* Filter for encoding strings for use in URL query strings
*/
.filter('urlEncode', [function() {
return window.encodeURIComponent;
}]);
vue:
<a ng-href="#/search?query={{ address | urlEncode }}" ng-repeat="address in addresses">
{{address}}
</a>
ceci est un exemple de code de travail:
app.filter('urlencode', function() {
return function(input) {
return window.encodeURIComponent(input);
}
});
Et dans le modèle:
<img ng-src="/image.php?url={{item.img_url|urlencode}}"