我的javascript页面有一个非常奇怪的问题:
$scope.ptfs = new Array();
$http.get('trades.json').success(function(data) {
data.portfolios.forEach(function(p){
$scope.ptfs.push(new Portfolio(p.id , p.name));
$scope.message3 = $scope.ptfs[0];
})
})
$scope.message2 = $scope.ptfs;
$scope.message4 = $scope.ptfs[0];
HTML:
2 : {{message2}}<br>
3 : {{message3}}<br>
4 : {{message4}}<br>
我得到的结果是: 2:[{&#34; id&#34;:0,&#34; name&#34;:&#34; CAN REAL&#34;,&#34;交易&#34;:[]},{&# 34; ID&#34;:1,&#34;名称&#34;:&#34; INVESTOPEDIA&#34;&#34;交易&#34;:[]}] 3:{&#34; id&#34;:0,&#34; name&#34;:&#34; CAN REAL&#34;,&#34;交易&#34;:[]} 4:
知道原因: - $ scope.message3 = $ scope.ptfs [0];和 - $ scope.message4 = $ scope.ptfs [0];
不会返回相同的结果吗?
谢谢, 尼古拉斯
答案 0 :(得分:2)
您遇到的问题是由于代码的异步性质。在将项目推送到$scope.message4 = $scope.ptfs[0];
之前执行$scope.ptfs
。在分配message4
时,您的数组为空。
$http.get('trades.json')
返回一个承诺。一旦这个承诺得到解决,即。一旦服务器响应您的请求,就会执行then
函数的回调$scope.ptfs
。