2015-04-27 5 views
7

Я хочу, чтобы сообщение об ошибке появлялось, если пользователь нажимает кнопку отправки без содержимого, и я хочу, чтобы кнопка отправки была отключена. Я могу получить либо один рабочий, но не оба одновременно.Angularjs - как получить сообщение об ошибке ng-message для одновременного отображения и отключения кнопки ввода

Приведенный ниже код вызывает сообщение, но позволяет использовать пустой предмет.

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

Эта версия отключает кнопку отправки, но не выводит сообщение

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

Я полагаю, это потому, что сообщение не может быть отображено, когда кнопка входа отключена, потому что ничего не было Отправлено?

Я попытался использовать $ disabled и $ invalid, но они не сработали.

+0

если я не хватает чего-то, что я получаю от этого является то, что 'нг-если =«todoForm $ представлен.»' Конфликтует с 'ng- messages = "todoForm.new. $ error" '. т. е. с 'ng-if', присутствующим в одном и том же div, я не вижу, чтобы появилось сообщение' ng-message = "required". Когда я удаляю 'ng-if', появляется требуемое сообщение: http://plnkr.co/edit/8pE3jmBNYRpPSvyJA0ys?p=preview –

+0

ng-if =" todoForm. $ Представлено "противоречит data-ng-disabled = «todo.Form. $ invalid», насколько я вижу. Ваш пример не создает ng-сообщение, разве это не сообщение html5? – vtechmonkey

ответ

1

Я удалил конфликтующий ng-if на элементе ng-message. Вот рабочий стол, показывающий фиксированный код.

http://plnkr.co/edit/gL0GoFT47mSeydKReLuD

Мое предположение, что вы забыли внедрить модуль «ngMessages» в качестве внешней зависимости.

Вы можете исправить свой код, как это:

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

Спасибо, но я не хочу, чтобы сообщение появлялось при загрузке страницы, только когда пользователь переходит к отправке без ввода чего-либо. Я знаю, что у меня работает ngMessage, так как я могу заставить его работать таким образом, – vtechmonkey

+0

Вы можете просто использовать $ dirty, чтобы сделать это, я обновил plunk, чтобы отразить изменения. –

+0

, который не работает, если пользователь ничего не ввел, и просто нажмите submit. – vtechmonkey