在Angular JS中模型值发生变化时,如何防止范围变量发生变化

时间:2017-07-28 14:37:42

标签: javascript angularjs

这是我在控制器函数中的打字稿:

let temp = null;

temp = _.find(this.scope.model.maintenanceArray, 
         function(_data,_key) {
           return _data.iD === currentId;
}
this.scope.originalData = temp;
this.scope.maintenanceData = temp;

在视图中,

<input type="text" class="form-control" name="dateFrom"         
placeholder="{{dateDefault}}"
ng-model="maintenanceData.from" required />

基本上我使用了maintenanceData for ngModel并希望保持原始数据不变。但问题是每次模型更改时都会更改originalData。如何防止originalData更新?

1 个答案:

答案 0 :(得分:3)

这是因为变量temp是通过引用originalDatamaintenanceData传递的,因此这两个变量都引用同一个对象。为避免这种情况,您可以为两个变量之一创建temp对象的副本。像这样:

this.scope.originalData = angular.copy(temp);
this.scope.maintenanceData = temp;

还有其他几种方法可以复制对象,所以这只是一个例子。