2015-06-25 26 views
19
gösteriliyor

Açısal uygulamasında form doğrulama hatalarını görüntülemek için açısal mesajlar kullanıyorum. belgelerine göre, ben de açısal-messages.js dosyası ithal olarak benim javascript ngMessages direktifi dahil ettikangularjs: ng-message her zaman

<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> 

aşağıdaki kodu kurduk.

Maalesef, bu iki mesaj sürekli olarak gösteriliyor. Giriş alanında yazdığımdan bağımsız olarak, geçerli bir e-posta olsun ya da olmasın. Her iki mesaj da her zaman gösterilir. Yalnızca bir ng mesajını dahil etmeye çalışırsam, sonuç aynıdır.

Neyi yanlış yaptığımı biliyormusunuz?

düzenleme: benim açıklama çok net değil durumda, bunun http://s9.postimg.org/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png

+0

@ostrich Javascript'in asıl konusu neydi? Aynı sorunu yaşıyorum. Tamamen kayıp! – JenonD

cevap

9

Her şey paylaştığınız kodunda ince görünüyor sonucun baskı olduğunu.

( )

Angularjs documentation'dan.

Varsayılan olarak, ngMessages her seferinde yalnızca bir hata gösterecektir. Ancak, tüm mesajları görüntülemek istiyorsanız, ng-messages-multiple özniteliği bayrağı, bunun gerçekleşmesi için ngMessages yönergesini içeren öğede kullanılabilir.

Alan kirli olduktan sonra hataları göstermek isterseniz, lütfen bu link numaralı telefonu ziyaret edin.

ngMessage modülünü ve kitaplığı da dahil ettiğinizden emin olun. Lütfen Carlos's answer'a bakın.

Teşekkür

+0

Burada neyin yanlış gidebileceğini ciddi olarak anlamıyorum. Plunker'da (yerel olarak yapılmakta olan js ithalatı dışında) olduğu gibi projemdeki form için tam olarak aynı koda sahibim ve sonuç aynı değil. Sadece açıklığa kavuşturmak için, aynı anda birden fazla mesaj göstermek istemiyorum. Ama yine de hapenning budur. İşte sonucun bir baskısıdır http://s9.postimg.org/du9230tdb/Screen_Shot_2015_06_26_at_17_09_24.png –

+0

Ayrıca kopyalarımın bir yazdırma ekranını da yayınlayabilirim. senin plunker dan. Hala çalışmıyor. Gönderiniz için teşekkürler –

+0

İşte bunu anlamaya ihtiyacım var. 1- Kodunuzun ekran görüntüsü. 2- chrome devtools'u açın ve konsolda herhangi bir hata olup olmadığını kontrol edin (Chrome'u kullandığınızı varsayalım :)). Yardım ettiğim için mutluyum. Teşekkür ederiz – jlulloav

59

Sen gerçekte modülüne ngMessage dahil emin ol. Eğer bu hile benim günü kurtardı

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

ile projeniz

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

Aynı problemi yaşadım ve çözümün tam olarak kontrol etmeyi unuttuğum şey. Pluralsight kursunu takip ettim: 'AngularJS İş Uygulamaları Hattı'. Ders materyali Açısal 1.2'ye dayanmaktadır, dolayısıyla 'ng-mesajının nasıl kullanılacağını açıklamak için devam etmemektedir (1.3+ bir özelliktir). –

+0

Aynı problem. Bu benim hayatımı kurtardınız cevap – chovy

+0

kabul edilmelidir! Teşekkürler! –

2

kontrol etmek kütüphane dahil

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

... ve.

+0

Bu kesinlikle işe yarayacak, ama "aldatıyor" - aslında ng-messages işlevselliğini kullanmıyorsunuz, ama aynı şeyi gerçekleştirmek için ng-show kullanıyorsunuz. –