我真的不明白为什么这段代码会这样工作。
我调用我的服务并获得返回的预期数据。我希望单独存储图片,因为我需要修改数组并将其解析为新的范围。我不明白的是,我现在已经创建了 2 个范围,product 和 productPictures - 为什么它们仍然链接在一起?
如果我使用 Lodash 来 _.sort() productPictures,那么 scope.Product 中的 Images 对象也会被改变,但是我不希望这种情况发生,而且我不知道如何隔离 $scope.productPictures .我尝试将范围作为简单的 js 变量处理,例如 var product;和 var productPictures,但当我根据服务的响应设置它们的数据时,它们仍然是链接的。
$api.productpage.query({
id: parseInt($stateParams.productId)
}, function (data) {
$scope.product = data[0];
$scope.productPictures = data[0]['Images'];
});
我是否忽略了一些非常微不足道的事情?我是否应该在单独的服务请求中管理产品图片?
最佳答案
对象在 javascript 中通过引用传递。这意味着在这段代码中
$scope.product = data[0];
$scope.productPictures = data[0]['Images'];
$scope.productPictures
指向与 data[0].Images
相同的对象(我想这是你的情况下的数组)。
要克服这个问题,您需要克隆对象而不仅仅是引用。您可能想查看 angular.copy
方法:
$scope.productPictures = angular.copy(data[0].Images);
关于javascript - AngularJS 从作用域创建新的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30071415/