Я пытаюсь создать встроенное редактирование для таблицы (аналогично angular-xeditable), но я хочу, чтобы только одна строка только редактируемой в то время. В настоящее время вы можете использовать любое количество строк в режиме редактирования.Угловая рядный редактировать таблицы одноточечно
Опция
Держите список строк в режиме редактирования, и как только будет выбрана новая строка для редактирования, цикл по списку и принудительно выйти из режима редактирования, поставить запрос строка в режиме редактирования и добавьте его в список. Это, по существу, позволит не более 1 строки быть в списке, что приведет к тому, что одна строка будет доступна для редактирования одновременно. Но я не показываю, как нужно переводить строки из режима редактирования.
Существует кнопка отмены, который выходит из режима редактирования. Поэтому, возможно, используйте jquery (или angular.element), чтобы получить список всех кнопок отмены и прагматически щелкнуть по ним - снова, принудительно выходя из строк в режиме редактирования, но это может замедлить работу для большой таблицы, так как она будет отжимать отменить на строк, которые даже не находятся в режиме редактирования.
<table class="table table-striped">
<thead>
<tr>
<th id="th-name">Name</th>
<th id="th-age">Age</th>
<th id="th-actions">Actions</th>
</tr>
</thead>
<tr ng-repeat="contact in model.contacts">
<td>
<span ng-show="edit != true">{{contact.name}}</span>
<input ng-show="edit" type="text" ng-model="model.selected.name" class="form-control" placeholder="Name">
</td>
<td>
<span ng-show="edit != true">{{contact.age}}</span>
<input ng-show="edit" type="text" ng-model="model.selected.age" class="form-control" placeholder="Name"></td>
<td>
<button ng-show="edit != true" id="table-edit" ng-click="edit = true; editContact(contact)" uib-tooltip="Delete" tooltip-trigger="mouseenter" tooltip-placement="bottom"><i class="fa fa-fw fa-pencil"></i></button>
<button ng-show="edit" id="table-save" ng-click="edit = false; saveContact($index)" uib-tooltip="Delete" tooltip-trigger="mouseenter" tooltip-placement="bottom"><i class="fa fa-fw fa-floppy-o"></i></button>
<button ng-show="edit" id="table-cancel" ng-click="edit = false; reset()" uib-tooltip="Delete" tooltip-trigger="mouseenter" tooltip-placement="bottom"><i class="fa fa-fw fa-trash"></i></button>
</td>
</tr>
</table>
Вот plunker демо (позволяет все строки в режиме редактирования): Plnkr Demo `
Вот рабочий пример того, что я хотел достичь, но с помощью шаблонов , Он вызывает getTemplate слишком много раз для моей симпатии (называет его каждый раз, когда выполняется дайджест - нажатие кнопок, ввод текста, отображение всплывающей подсказки). Working Demo (Using templates)
Хорошее обходное решение. Я переместил ваш цикл «повторного отображения» для сброса функции, так как отмена редактирования также должна отображать все кнопки (http://plnkr.co/edit/mTa8EPmuwEOw1DBHLAHN?p=preview). Но, как вы можете видеть из демонстрации с использованием шаблонов, идеальные ожидания состоят в том, чтобы показать все кнопки и иметь возможность щелкнуть править на других строках, не сохраняя/отменя –
Просто измените элемент, чтобы показать и скрыть ('eles') для ввода текстового поля. Кроме того, вам нужно будет добавить имя класса для диапазонов, содержащих контент. Логика должна быть одинаковой. –
Он по-прежнему не достигает желаемого результата (для отображения всех данных и кнопок, а также для нажатия любой кнопки редактирования для входа в режим редактирования для соответствующей строки). Пожалуйста, см. Мой ответ, и если у вас есть обратная связь, это очень приветствуется и ценится! Спасибо за вашу помощь! –