Essayer de remplacer les espaces par des tirets en utilisant ng-model
Je suis nouveau sur AngularJS et essayer de créer une application simple qui va me permettre de télécharger des fichiers à mon Laravel site. Je veux que le formulaire pour me montrer l'aperçu de ce que le téléchargement de l'élément. Je suis donc en utilisant ng-modèle à atteindre cet objectif et je suis tombé sur les éléments suivants:
J'ai une entrée avec bootstrap stylings et je suis en utilisant des crochets pour AngularJS templating (parce que comme je l'ai mentionné, je suis à l'aide de Laravel avec son système à roues alignées). Et j'ai besoin de supprimer les espaces de l'entrée (en tant que type I) et de les remplacer par des tirets:
<div class="form-group"><input type="text" plaeholder="Title" name="title" class="form-control" ng-model="gnTitle" /></div>
Et puis j'ai ceci:
<a ng-href="/art/[[gnTitle | spaceless]]" target="_blank">[[gnTitle | lowercase]]</a>
Et mon app.js ressemble à ceci:
var app = angular.module('neoperdition',[]);
app.config(function($interpolateProvider){
$interpolateProvider.startSymbol('[[').endSymbol(']]');
});
app.filter('spaceless',function(){
return function(input){
input.replace(' ','-');
}
});
J'obtiens l'erreur suivante:
TypeError: Cannot read property 'remplacer' undefined
Je comprends que j'ai besoin de définir la valeur avant de la filtrer, mais je ne suis pas sûr de l'endroit où le définir exactement. Et aussi, si je le définir, je n'en veux pas changer mon espace réservé.
source d'informationauteur Bravi
Vous devez vous connecter pour publier un commentaire.
Il y a peu de choses qui manquent dans votre filtre. Tout d'abord, vous devez renvoyer la nouvelle chaîne. Secondaire, de l'expression régulière n'est pas correct, vous devez utiliser le modificateur dans le but de remplacer tous les caractères d'espace. Enfin, vous devez également vérifier si la chaîne est définie, parce que d'abord le modèle de la valeur peut être
undefined
donc.replace
sur undefined va jeter erreur.Tous ensemble:
Démo: http://plnkr.co/edit/5Rd1SLjvNI18MDpSEP0a?p=preview
Bravi juste essayer ce filtre
pour eaxample {{X | replaceSpaceToDash}}
d'Abord, vous devez vous injecter votre filtre en vous module en ajoutant son nom sur le tableau :var app = angulaire.module('neoperdition',['en dehors de l'espace']);Deuxièmement, la fonction du filtre à retourner quelque chose. La Chaîne De Caractères.le prototype.replace() de retour d'une nouvelle Chaîne de. donc, vous avez à retourner :
Edit: dfsq de répondre, en étant beaucoup plus précis que le mien.