@Chetson
front-end разработчик

Как при добавлении строки изменить атрибуты в DOM?

Есть табличка с пользователями.
Есть кнопочка "добавить"

Как при добавлении новой строки включить in-place редактирование данных для нового элемента, не задевая ранее добавленные, и после прохождения валидации запретить редактирование поля?
ontentEditable="false"

В контроллере нужно только добавить в массив еще один объект чтобы он был отображен на странице, но мне надо до определенного момента иметь возможность изменять данные о пользователе!

Иными словами Как можно из Контроллера манипулировать атрибутами тега в HTML при добавлении его в DOM?
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Напишите директиву. Это единственный правильный путь.

Псевдокод:
function editOnceDirective(){
    return {
         require: 'ngModel',
         link: function (scope, el, attr, ctrl) {
              // включаем редактирование если у нас пустое значение
              // еще стоит проверять убрали ли мы фокус с поля и все такое
              scope.$watch(function () { return ctrl.$invalid; }, function (isInvalid) {
                   if (!isBoolean(isInvalid)) return;

                   el.attr('contenteditable', isInvalid);
              }

              // вешаем листенеры на элемент что бы обновлять значение
         }
    }
}


Читать про ngModelController, кастомные инпуты и т.д.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mr_T
@mr_T
Web-разработчик
Такого в ангуляре нет, можно только сделать как-то так:

<div ng-hide='editMode'>{{content}}</div>
<div ng-if='editMode' contenteditable>{{content}}</div>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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