使用编辑表单的重置功能

时间:2014-03-27 10:05:43

标签: javascript angularjs

我有一个表单,用户可以在其中修改数据,然后点击发送将其存储在服务器上。我也有这个重置按钮,我希望能够重置用户所做的所有更改。

这是我的控制者:

controller: function($scope, $timeout, project){
  var initProject = project;
  $scope.project = project;

  $scope.reset = function(){
    console.log(initProject) //Same value as $scope.project after modifying $scope. Why?
    $scope.project = initProject;
  };

我的想法是将初始解析值(项目)存储在变量中。然后将$ scope重置为此值。但它不起作用。当用户修改$ scope.project时,也会以某种方式修改initProject。

有什么想法吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

你必须复制project;否则,projectinitProject实际上是相同的对象,可通过不同的变量访问。

您可以使用angular.copy

  

<强> angular.copy
    - 模块中的功能ng
   创建源的深层副本,该副本应该是对象或数组。


只需更改

var initProject = project;
...
$scope.project = initProject;

var initProject = angular.copy(project);
...
$scope.project = angular.copy(initProject);

此处a JSFiddle example