У меня есть кнопка для изменения статуса (НАЧАЛО/ОСТАНОВЛЕН). Кнопка создана в ячейке ng-grid.Кнопка динамического ng-click застревает после первого щелчка
Ячейка определяется как {field:'status', displayName:'Status', cellTemplate: 'cell/statusCellTemplate.html'}]
где шаблон
<button class="btn btn-primary" ng-click="changeStatus(row.getProperty('id'),'{{row.getProperty(col.field) | switchStatus}}')">{{row.getProperty(col.field)}}</button>
myapp.filter('switchStatus', function() {
return function(input) {
return (input == 'STOPPED') ? 'STARTED' : 'STOPPED';
};
});
В Plunker, начальное состояние STOPPED таким образом, оказывается клетка
<button class="btn btn-primary ng-scope ng-binding" ng-click="changeStatus(row.getProperty('id'),'STARTED')">STOPPED</button>
Тогда нажатие кнопки переключает состояние, как ожидалось, и отображаемая ячейка равна
<button class="btn btn-primary ng-scope ng-binding" ng-click="changeStatus(row.getProperty('id'),'STOPPED')">STARTED</button>
Но нажав на кнопку не переключает статус, который прилип к НАЧАТЬ тогда как параметр установлен в STOPPED.
Plunker, который воспроизводит проблему.
Edit: Лучше пример
Первый ответ заставил его работать, удаляя фильтр, но я хочу, чтобы сохранить его. Поэтому я создал пример, в котором отображается кнопка, и нажатие кнопки увеличивает количество данных. Счетчик застревает после первого щелчка.
Init: <button class="btn btn-primary ng-scope" ng-click="increment(1)">Increment</button>
Click: <button class="btn btn-primary ng-scope" ng-click="increment(2)">Increment</button>
Нажмите: <button class="btn btn-primary ng-scope" ng-click="increment(2)">Increment</button>
Должно быть increment(3)
.
Модифицированный Plunker
Вы можете сделать это более кратким, вызвав фильтр один раз в функции changeStatus и используя это значение для установки данных и nextStatus. –
Он работает, но вы удалили фильтр в шаблоне. Цель фильтра - подготовить следующее значение для отправки на сервер. Я создал новый Plunker с кнопкой, которая просто увеличивает переменную. У меня такая же проблема. – Sydney