gpt4 book ai didi

javascript - Angular 无意绑定(bind)/对象镜像

转载 作者:行者123 更新时间:2023-11-29 21:54:33 25 4
gpt4 key购买 nike

所以我正在开发一个使用 AngularJS 的项目,我需要能够将范围内对象的值与其之前记录的值进行比较。我正在通过如下算法执行此操作:

function() {
var data = [
{ id: 1, key: 'value', foo: 'bar'},
{ id: 2, key: 'value', foo: 'bar'}
]
$scope.oldTarget = data[0];
$scope.target = data[0];
}

现在如果我要这样做:

function() {
$scope.target.foo = 'fighters';

if ($scope.target != $scope.oldTarget) console.log('Target was modified');
console.log($scope.target);
console.log($scope.oldTarget);
}

它会输出:

{ id: 1, key: 'value', foo: 'fighters'}
{ id: 1, key: 'value', foo: 'fighters'}

我的假设是 AngularJS 自动绑定(bind)两个变量 target 和 oldTarget,并将对 target 所做的任何更改镜像到 oldTarget。是这样吗,如果是这样,我有什么办法可以防止这种情况发生吗?如果不是,我在做什么导致它这样做?

最佳答案

这与 Angular 无关,它是默认的 JavaScript 行为。您正在引用同一个对象。如果您打算在不更改源的情况下对其进行修改,则需要克隆该对象。

看看:

关于javascript - Angular 无意绑定(bind)/对象镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com