ng-maxlength vis de mon modèle
Je suis en train de faire un simple textarea avec "un grand nombre de caractères restants" le long de la validation.
lorsque j'utilise ng-maxlength pour valider mon formulaire, il réinitialise mon charcount dès que la longueur des hits de la longueur max. Voici la plunkr Aucune solution de contournement?
<body ng-controller="MainCtrl">
<div ng-form="noteForm">
<textarea ng-maxlength="15" ng-model="result"></textarea>
<p>{{15 - result.length}} chars remaining</p>
<button ng-disabled="!noteForm.$valid">Submit</button>
</div>
</body>
- Drôle de chose, mais pour moi (à l'aide Angulaire 1.4.7 + Tapuscrit 1.8.7) l'utilisation de l'attribut HTML "maxLength" a le même effet que mentionne ici "ng-maxLength": après la définition de certains de grande valeur (plus grand que la limite définie) directement dans le modèle, la valeur dans le modèle devient indéfini. De mon point de vue, c'est Angulaire de bug (comme user3232182 mentionné ci-dessus). Probablement même pas lié à ng-maxLength directve, mais à l'ensemble du mécanisme de liaison.
Vous devez vous connecter pour publier un commentaire.
Lorsque votre textarea est supérieure à 15 caractères,
result
devientundefined
— c'est juste la façon dont leng-min/maxlength
directives de travail. Je pense que vous devez écrire votre propre directive. Voici une directive d'entrée du bloc après 15 caractères:violon
Mise à jour: pour permettre à plus de 15 caractères, mais désactiver le bouton soumettre lorsque le comptage est supérieure à 15:
violon
ngModelCtrl.$formatters.push(fromUser)
, comme le défaut Angulaire validateurs faire, il fixe.ng-maxlength
si vous ajoutezng-model-options="{allowInvalid: true}"
. Source: stackoverflow.com/a/29132765/592062Alternativement, vous pouvez simplement ajouter le standard html
maxlength
attribut à côté de lang-maxlength
.Ce sera cut-off " à "15" caractères, comme
maxlength
l'a toujours fait, et en outre lang-maxlength
vous permet d'afficher de message personnalisé à atteindre la limite.Cliquez sur pour Plunker Exemple
Si vous ajoutez un attribut name de la balise textarea puis une nouvelle propriété avec la valeur est créée dans le champ d'application de la forme, que vous pouvez utiliser pour obtenir la longueur de votre compteur de caractères.
Mise à jour de votre plnkr
Comme le doc dit, le montant de valider la fonction de modèle défini à l'indéfini lorsque la validité des modifications aux invalides.
Mais, nous pouvons encore éviter ce problème en ajoutant simplement
allowInvalid: true
à la ng-modèle-options.Donc, il suffit de modifier votre code comme:
Je pense que cela devrait être enregistré comme un bug sur angulaire. Il n'est pas censé effacer votre modèle.J'ai une directive que les liens d'un menu déroulant, sélectionnez une zone de texte et dès que vous insérez un mot qui fait aller sur la longueur maximale puis il efface mon modèle et de la zone de texte.Il est censé être un validateur de ne pas effacer votre modèle lorsqu'il pense que le modèle n'est pas valide .
Une alternative que j'utilise est de conserver le même comportement que la ng-maxlength validateur mais pour nourrir la longueur à l'arrière via un attribut supplémentaire réelle de la longueur'.
Ici, c'est l'élément avec l'attribut supplémentaire:
J'ai une meilleure solution je pense: pour définir la maxlength si le ng-maxlength est présent.
Cette façon, vous obtenez les deux fonctions en même temps: angulaire validations + texte coupé