Подтвердить что ты не робот

AngularJS - Reset $scope.data к исходным значениям

Я создал скрипку здесь: http://jsfiddle.net/nicktest2222/W4VaA/

Я просто хочу нажать кнопку reset и вернуть мои исходные значения. Кто-нибудь знает лучший способ сделать это?

Заранее спасибо

function TodoCtrl($scope) {
  $scope.data = [
   {text:'learn angular', done:true},
   {text:'build an angular app', done:false}];

  $scope.orig = [$scope.data];

  $scope.reset = function() {
    $scope.data = $scope.orig;
  };

}
4b9b3361

Ответ 2

Простейшим вариантом является использование angular.copy для клонирования исходных данных, а затем снова для reset данных в $scope.

function TodoCtrl($scope) {
  $scope.data = [
    {text:'learn angular', done:true},
    {text:'build an angular app', done:false}
  ];

  var originalData = angular.copy($scope.data);
  $scope.reset = function() {
     angular.copy(originalData, $scope.data); 
  };
}

Изменить: angular.copy при условии, что два значения опустят целевой объект или массив перед копированием исходных значений в него. Это может быть действительно полезно при работе с дочерними областями.

Ответ 3

madhead работает изначально, но потом данные указывают на $scope.orig и reset больше не будут работать. Вам понадобится сделать копию в reset, чтобы она тоже работала.

Отредактированная безумная работа: http://jsfiddle.net/W4VaA/2/

function TodoCtrl($scope) {
  $scope.data = [
    {text:'learn angular', done:true},
    {text:'build an angular app', done:false}
  ];

  $scope.orig = angular.copy($scope.data);

  $scope.reset = function() {
     $scope.data = angular.copy($scope.orig);
  };
}