Отслеживание того, редактировал ли пользователь форму

Я загружаю форму с данными клиента. Когда пользователь редактирует данные о клиенте, я хочу иметь возможность отслеживать изменения, чтобы, если пользователь изменит URL-адрес, я мог вывести предупреждение, чтобы спросить пользователя, хотят ли они продолжить и потерять свои несохраненные изменения.

Я думаю добавить ng-change в каждое поле ввода и отслеживать с помощью $scope.counter, но это хлопотно, так как моя форма довольно большая.

Это более элегантный способ решить эту проблему?

Спасибо


person user1424508    schedule 26.02.2014    source источник
comment
Поскольку вы используете angularjs, как люди сказали ниже, используйте $ pristine. Однако, если бы вы реализовали это самостоятельно, лучше всего было бы сохранить содержимое как атрибут каждого входа, а при попытке выйти сравнить содержимое с тем, что вы сохранили в начале. Если отличается, то вы генерируете Вы уверены? сообщение. Установленный грязный флаг не учитывает случай, когда пользователь вносит изменения, а затем нажимает Ctrl-Z.   -  person Alexis Wilke    schedule 26.02.2014


Ответы (3)


Это уже поддерживается в angular js. вы можете использовать $scope.yourForm.$pristine, чтобы проверить, отредактировано или нет.

person Jayantha Lal Sirisena    schedule 26.02.2014

Вам нужно проверить, не является ли ваша форма $dirty.

Аналогичный ответ хорошо объясняет это: Обнаружение несохраненных данных с помощью angularjs

person Emerson Farrugia    schedule 26.02.2014

проверить, является ли форма $грязной или $первоначальной

person Snowburnt    schedule 26.02.2014