【发布时间】:2015-03-12 11:50:31
【问题描述】:
我有一个数组,其中有两个对象,分配给 $scope.items;
当我这样做时
console.log($scope.items)
输出是:
[
{s: "item1", q: 3, $$hashKey: "object:3", population: Object},
{s: "item2", q: 3, $$hashKey: "object:4", population: Object}
]
但是当我这样做时
console.log($scope.items[0])
输出(有时*)是:
{s: "item1", q: 3, $$hashKey: "object:3"}
'* 这并不总是发生,取决于页面加载。刷新页面时,结果有时有人口,有时没有。
第一个输出始终是完整的,总体保持不变。 (无论我按 F5 多少次 :))
我同时调用了 console.log。和上面的顺序一样。
所以我不明白当我直接调用其中一个对象时它们是不完整的?
看起来像是解析错误,但第一个输出怎么总是完整的呢?
额外信息 $scope.items 是另一个数组的副本。
我使用 $http.get 构建对象,但也尝试在他的成功函数中调用 console.logs。
$http.get 被放置在一个 foreach 中,因此在完整数组完成之前被多次调用
我使用 http.get 来构建人口。
我希望有人可以为我澄清一下,这怎么可能。或者如何继续寻找找到错误的可能性。
【问题讨论】:
-
你是怎么得到
$scope.items的?并填补人口? -
我最近注意到,当您调用
console.log($scope.items)时,它会按引用记录,但当您调用console.log($scope.items[0])时,它会按值记录,请尝试执行console.log(angular.copy($scope.items)) -
我忘了提我先用 $scope.items = angular.copy($scope.other); 复制对象;
-
你能发布所有代码吗?包括http获取
-
我在这个 plunker 中为你制作了工作 plunker plnkr.co/edit/QPB2JW8OAA4TiLgH1g6j?p=preview 我在成功方法中使用
$http我更改了对象,然后在finally我 console.log 中它总是会格式正确
标签: javascript arrays angularjs object