2015-04-27 35 views
7

Chcę, aby komunikat o błędzie pojawił się, gdy użytkownik kliknie przycisk Wyślij bez zawartości i chcę, aby przycisk przesyłania był wyłączony. Mogę uzyskać jeden działający, ale nie oba jednocześnie.Angularjs - jak uzyskać komunikat o błędzie wymagającym ng do wyświetlania i wyłączania przycisku wprowadzania w tym samym czasie

Poniższy kod wyświetla komunikat, ale pozwala na pusty element todo.

<form name="todoForm" novalidate > 


    <div ng-messages="todoForm.new.$error" ng-if="todoForm.$submitted"><div ng-message="required">Add Your Item Below...</div></div><!--message appears until valid input is entered--> 

    <input type="text" name="new" placeholder="start typing..." autofocus data-ng-model="newTodo" required=""/> 

    <button input type="submit" ng-click="addTodo()" >Add To List</button><!--disables form if form not valid--> 

</form> 

Ta wersja wyłącza przycisk Prześlij, ale nie spowoduje wyświetlenie komunikatu

<form name="todoForm" novalidate > 


    <div ng-messages="todoForm.new.$error" ng-if="todoForm.$submitted"><div ng-message="required">Add Your Item Below...</div></div><!--message appears until valid input is entered--> 

    <input type="text" name="new" placeholder="start typing..." autofocus data-ng-model="newTodo" required=""/> 

    <button input type="submit" ng-click="addTodo()" data-ng-disabled="todoForm.$invalid" >Add To List</button> 
</form> 

Przypuszczam, to dlatego, że nie może być wyświetlany komunikat po naciśnięciu przycisku wejście jest wyłączone, ponieważ nic nie zostało przesłane?

Próbowałem używać zamiast tego $ disabled i $ invalid, ale nie zadziałały.

+0

chyba że jestem brakuje czegoś, co mam z tym jest to, że 'ng-if =„todoForm $ złożone.”' 'Jest sprzeczne z ng- messages = "todoForm.new. $ error" '. Oznacza to, że przy 'ng-if' obecnym na tym samym div, nie widzę komunikatu' ng-message = "wymagany" '. Kiedy usuwam 'ng-if', pojawia się odpowiedni komunikat: http://plnkr.co/edit/8pE3jmBNYRpPSvyJA0ys?p=preview –

+0

ng-if =" todoForm. $ Submitted "jest w konflikcie z data-ng-disabled = "todo.Form. $ invalid" o ile widzę. Twój przykład nie generuje wiadomości ng, czy nie jest to wiadomość HTML5? – vtechmonkey

Odpowiedz

1

Usunąłem sprzeczne ng-if na elemencie wiadomości ng. Oto działający plunk pokazujący poprawiony kod.

http://plnkr.co/edit/gL0GoFT47mSeydKReLuD

Moje założenie jest, że zapomnieli wstrzyknąć moduł „ngMessages” jako zewnętrznego uzależnienia.

można naprawić swój kod tak:

var app = angular.module('plunker', ['ngMessages']); 
+0

Dzięki, ale nie chcę, aby pojawiał się komunikat po załadowaniu strony, tylko wtedy, gdy użytkownik przejdzie do przesyłania bez wprowadzania niczego. Wiem, że mam pracę z NgMessage, ponieważ mogę ją uruchomić w ten sposób, – vtechmonkey

+0

Możesz po prostu użyć $ dirty, aby to zrobić, zaktualizowałem pluna, aby odzwierciedlić zmianę. –

+0

to nie działa, jeśli użytkownik niczego nie wprowadził i po prostu naciśnij przycisk przesyłania. – vtechmonkey