尝试将范围对象分配给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。

09-26 13:25