2013-08-08 3 views
3

Возможно ли сбросить форму до ее начальных значений в AngularJS?Сбросить форму до начальных значений в AngularJS

У меня есть простая форма с полем ng-model='my_object.my_value', который отключен. Когда я начинаю редактировать его, я копирую $scope.my_object в $scope.my_object_backup.

Если я нажму «Отменить», я отключу поле и задаю $scope.my_object = $scope.my_object_backup. Но значение, которое я вижу на моем входе, не меняется.

Есть ли способ обойти это поведение?

Я пробовал установить value="{{my_object.my_value}}", но это ничего не меняет.

+1

Как вы скопировали объект? – zsong

+0

В основном точно такой же вопрос: http://stackoverflow.com/questions/13085024/reset-a-model-with-angular-js –

+0

Я сделал простой '$ scope.my_object_backup = $ scope.my_object' –

ответ

7

Вы можете использовать angular.copy для глубокой копии объекта

$scope.my_object_backup = {}; 
angular.copy($scope.my_object, $scope.my_object_backup); 

Что вы сделали $scope.my_object_backup = $scope.my_object это сделать эталонную задание, чтобы они на самом деле указывают на exacly же объекта. Итак, если вы измените одну ссылку, вы получите доступ к модифицированному объекту с помощью другой ссылки.

+2

Wow, I попробовал это сначала (как в документах), но он всегда сбрасывается до нуля, поэтому я думал, что это не хорошо, и отправился с '$ scope.my_object_backup = $ scope.my_object' ... Я попробовал снова, как вы сказали, и заметил, $ scope.my_object_backup' был инициализирован с помощью 'null' ... Я изменил его на' new Object() ', и он работает как шарм! –