我有一个表单,用户可以在其中修改数据,然后点击发送将其存储在服务器上。我也有这个重置按钮,我希望能够重置用户所做的所有更改。
这是我的控制者:
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。
有什么想法吗?有更好的方法吗?
答案 0 :(得分:0)
你必须复制project
;否则,project
和initProject
实际上是相同的对象,可通过不同的变量访问。
您可以使用angular.copy
:
<强> angular.copy 强>
- 模块中的功能ng
创建源的深层副本,该副本应该是对象或数组。
只需更改
var initProject = project;
...
$scope.project = initProject;
到
var initProject = angular.copy(project);
...
$scope.project = angular.copy(initProject);