Задать вопрос
@krekerov
Fullstack ninja

Angular pristine в ng-repeat: почему не работает код?

Подкажите почему не работает код.

<table class="table table-hover">
        <tr ng-repeat="contact in contacts">
            <form name="contactEditForm{{$index}}">
            <td>
                <input type="text" class="form-control" placeholder="ФИО" ng-model="contact.name">
                <input type="text" class="form-control" placeholder="Дожность" ng:model="contact.position" >
                <button ng-hide="contactEditForm{{$index}}.$pristine" class="save btn btn-primary" ng:click="editContact()">Сохранить</button>

            </td>
            <td>
                
                <input class="form-control" placeholder="Email" ng:model="contact.email" >
            </td>
            <td>
                <input type="text" class="form-control" placeholder="Телефон" ng:model="contact.phone" >
                <input type="text" class="form-control" placeholder="Мобильный" ng:model="contact.mobile" >
            </td>
            <td><textarea type="text" class="form-control" placeholder="Описание" ng:model="contact.feature" ></textarea></td>
            <td><span class="glyphicon glyphicon-remove" ng:click="deleteContact(contact.id)"></span></td>

            </form>
        </tr>
    </table>


Есть аналогичная форма. но которая не выводится через ng-repeat и при изменении формы появляется кнопочка.
  • Вопрос задан
  • 3204 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
contactEditForm{{$index}}.$pristine - синтаксическая ошибка. Такое выражение недопустимо в JavaScript.
Ответ написан
kompi
@kompi
nullstack devoops
Погуглим ответ за вас: stackoverflow
Если лень читать, то не создавая ничего нового, можно сделать таким способом:
<tr ng-repeat="contact in contacts">
            <form name="contact.contactEditForm">
        ...
       <button ng-hide="сontact.contactEditForm.$pristine" class="save btn btn-primary" ng:click="editContact()">Сохранить</button>
       ...

Вообщем, вот решение ваших проблем (используйте ng-form) plunker.
Единственное, непонятно, почему ng-form не работает сразу после tr, т.е. пришлось все завернуть в td.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы