Javascript 无法将作用域分配给要操作的变量
试图将范围对象分配给JavaScript变量,以便在发送到我的API之前进行较小的操作。但是,对JavaScript变量所做的任何更改都会更改scope对象Javascript 无法将作用域分配给要操作的变量,javascript,angularjs,Javascript,Angularjs,试图将范围对象分配给JavaScript变量,以便在发送到我的API之前进行较小的操作。但是,对JavaScript变量所做的任何更改都会更改scope对象 var recruitingCallListOutput = $scope.RecrutingCallingList.Recruit; // manipulation of recruitingCallListOutput 操作实际上仍然会更新不需要的范围对象。感觉我没有正确理解AngularJS中的某些内容。有没有办法抓取数据并将其从
var recruitingCallListOutput = $scope.RecrutingCallingList.Recruit;
// manipulation of recruitingCallListOutput
操作实际上仍然会更新不需要的范围对象。感觉我没有正确理解AngularJS中的某些内容。有没有办法抓取数据并将其从范围中分离出来?这与AngularJS无关。这是Javascript,也是预期的行为 例如,如果您现在打开浏览器控制台(F12->console)并运行以下操作:
var foo = {x:1};
var copy=foo;
copy.x=2;
console.log(foo.x);
您将看到打印出来的{x:2}
这与Javascript、C#、Java等中的任何对象引用的预期行为相同。因为您正在进行引用而不是复制,所以对引用的任何更改实际上都是对原始对象的更改
在您的案例中,解决此问题的最简单方法是将您感兴趣的值从相关项复制到一个完全独立的对象中,并修改该副本
e、 g
但除非你的目标真的很复杂,否则我会小心的。考虑到,如果你真的需要原始对象的所有属性,也许你只需要发送一些它们到你的后端。 在你的例子中,招聘CalkListDebug是一个<强>引用< /强>到$StaseReututCalpListList.Cube(请参阅更详细的信息)。您需要制作$scope.RecrutingCallingList.Recruit的副本 如果Recruit是一个浅层对象,这意味着没有嵌套对象(特性值仅为原语),则只需执行以下操作即可
var recruitingCallListOutput = Object.assign({}, $scope.RecrutingCallingList.Recruit);
如果将嵌套对象/数组作为属性值,则需要进行深度复制。我已经有一段时间没有进入棱角分明的世界了,但是
var recruitingCallListOutput = angular.copy($scope.RecrutingCallingList.Recruit)
实际上,在这两个示例中,您都可以使用angular.copy。…制作副本?
var recruitingCallListOutput = angular.copy($scope.RecrutingCallingList.Recruit)