尝试将范围对象分配给JavaScript变量以进行较小的操作,然后再发送到我的API。但是,对JavaScript变量所做的任何更改都会更改范围对象。
var recruitingCallListOutput = $scope.RecrutingCallingList.Recruit;
// manipulation of recruitingCallListOutput
该操作实际上仍然会更新不需要的作用域对象。感觉我对AngularJS的理解不正确。有没有办法获取数据并将其与示波器分离?
最佳答案
在您的示例中,hiringingCallListOutput是对$ scope.RecrutingCallingList.Recruit的引用(有关更多详细信息,请参见https://codeburst.io/explaining-value-vs-reference-in-javascript-647a975e12a0。)您将想要复制$ scope.RecrutingCallingList.Recruit。
如果Recruit是一个浅对象,意味着没有嵌套对象(属性值仅是基元),则只需
var recruitingCallListOutput = Object.assign({}, $scope.RecrutingCallingList.Recruit);
如果您将嵌套的对象/数组作为属性值,则需要进行深度复制。自从我进入有角世界已经有一段时间了,但是
var recruitingCallListOutput = angular.copy($scope.RecrutingCallingList.Recruit)
您实际上可以在两个示例中使用angular.copy。