2015-06-25 19 views
19

Sto usando messaggi angolari per visualizzare errori di convalida del modulo sulla mia app angolare. Come per la documentazione, ho costruito il seguente codiceangularjs: ng-messaggio mostra sempre

<form name="loginForm"> 
    <label class="item item-input"> 
    <input type="email" placeholder="Email" ng-model="data.email" name="email" required> 
    </label> 
    <div ng-messages="loginForm.email.$error" style="color:maroon"> 
    <div ng-message="required">Please input a valid e-mail address</div> 
    <div ng-message="email">You did not enter your email address correctly...</div> 
    </div> 
</form> 

ho incluso la direttiva ngMessages nel mio javascript, così come importare il file angolare messages.js.

Sfortunatamente, questi due messaggi sono visualizzati in perpetuo. Indipendentemente da ciò che digito nel campo di input, sia esso un indirizzo email valido o meno. Entrambi i messaggi sono sempre visualizzati. Se provo a includere solo un messaggio ng, il risultato è lo stesso.

Qualche idea su cosa potrei fare male?

edit: Nel caso in cui la mia descrizione non è molto chiaro, si tratta di una stampa del risultato http://s9.postimg.org/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png

+0

@ostrich quale era il vero problema in javascript? Sto vivendo lo stesso problema. Completamente perso! – JenonD

risposta

9

Tutto sembra andare bene nel codice che stai condividendo.

<form name="loginForm"> 
    <label class="item item-input"> 
     <input type="email" placeholder="Email" ng-model="data.email" name="email" required> 
    </label> 
    <div ng-messages="loginForm.email.$error" style="color:maroon"> 
     <div ng-message="required">Please input a valid e-mail address</div> 
     <div ng-message="email">You did not enter your email address correctly...</div> 
    </div> 
</form> 

Here is a working copy on Plunker Sto usando il tuo pezzo di codice.

Da Angularjs documentation.

Per impostazione predefinita, ngMessages visualizzerà solo un errore alla volta. Tuttavia, se si desidera visualizzare tutti i messaggi, è possibile utilizzare il flag di attributo ng-messages-multiple sull'elemento contenente la direttiva ngMessages per fare in modo che ciò accada.

Se si desidera visualizzare gli errori dopo che il campo è sporco, visitare questo link.

Assicurarsi di includere anche il modulo ngMessage e la libreria. Si prega di vedere Carlos's answer.

Grazie

+0

Sinceramente non capisco cosa potrebbe andare storto qui. Ho lo stesso codice esatto per il modulo nel mio progetto come tu hai su Plunker (a parte le importazioni js che vengono fatte localmente), eppure il risultato non è lo stesso. Giusto per chiarire, non voglio mostrare più messaggi contemporaneamente. Ma è quello che sta comunque accadendo. Ecco una stampa del risultato http://s9.postimg.org/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png –

+0

Posso anche pubblicare una schermata di stampa del mio codice, se lo desideri, anche se per paura di avere qualche errore di battitura copiavo quello incollato dal tuo plunker. Continua a non funzionare. Grazie per il tuo post anche se –

+0

Ecco cosa ho bisogno di capire questo. 1- Screenshot del tuo codice. 2- Aprire chrome devtools e controllare che non si verifichino errori sulla console (supponendo che si stia utilizzando Chrome :)). Sono felice di aiutare. Grazie alla console – jlulloav

59

devi assicurarsi che si sta in realtà includi ngMessage al modulo.

var app = angular.module('app', [ 
    'ngMessages' 
]) 

... e di aver incluso la libreria al progetto

<script src="/scripts/vendors/angular-messages/angular-messages.js"></script> 
+4

Ho avuto lo stesso problema e la tua soluzione è esattamente ciò che avevo dimenticato di verificare. Stavo seguendo il corso Pluralsight: "AngularJS Line of Business Applications". Il materiale del corso è basato su Angular 1.2, quindi non descrive come utilizzare 'ng-message' (che è una funzionalità di 1.3+). –

+0

Stesso problema. Questo dovrebbe essere accettato risposta – chovy

+0

mi hai salvato la vita! Grazie! –

2

Verificare con

<div ng-messages="loginForm.email.$error" ng-show="loginForm.email.$invalid && loginForm.email.$touched"> 
... 
</div> 

Questo trucco mi ha salvato la giornata.

+0

Questo funzionerà, certo, ma è "barare" - in realtà non stai più utilizzando la funzionalità di ng-messages, ma usando ng-show per realizzare la stessa cosa. –

Problemi correlati