我有AngularJS应用程序。从服务器我得到一个JSON。我正在分配两个对象。一个我在我的表单页面中使用来编辑。当用户按提交时,我想检查新值和旧值是否相同。但每当我更新表单中的值并进行检查时,另一个对象值也会更新。导致两个对象始终相同。
Here is the JSFiddle Demo。每当我尝试更改值时,另一个值也会更新。
防止其他对象不改变的解决方案是什么?
HTML
<div ng-app>
<h2>Form</h2>
<div ng-controller="MainCtrl">
<form name="myForm" ng-submit="saveForm()">
<input type="text" ng-model="obj.name">
<input type="text" ng-model="obj.value">
<input class="btn-primary" type="submit" value="Save" ng-disabled="myForm.$pristine">
</form>
</div>
</div>
JS
function MainCtrl($scope) {
$scope.obj={
name:"N1",
value:"val"};
var oldObj = $scope.obj;
$scope.saveForm=function() {
alert(JSON.stringify($scope.obj));
alert(JSON.stringify(oldObj));
if($scope.obj===oldObj){
alert("same");
} else {
alert("not same");
}
}
}
答案 0 :(得分:1)
问题是,您只需将参考存储到oldObj
。
因此oldObj
和$scope.obj
始终相同。
您需要复制它。
检查小提琴:http://jsfiddle.net/fc0jo1so/1/
我用fromJson,toJson
做到了答案 1 :(得分:0)
尝试使用jQuery进行深层复制
var oldObj = jQuery.extend(true, {}, $scope.obj);
答案 2 :(得分:0)
您只需更改此行
即可var oldObj = angular.copy($ scope.obj);
尝试它会起作用。 &安培;警惕不一样