我对角度很新,而且我坚持不懈。 我正在使用名为RateInfoService的服务从API中提取数据。 JSON看起来像这样
$scope.refreshData = function() {
RateInfoService.getMarket($scope.alarmingMarket).success(function(data) {
if($scope.alarmingMarket.length <= 1){
$scope.rate = [];
$scope.rate.marketid = data.query.results.rate.id;
$scope.rate.rate = data.query.results.rate.Rate;
$scope.rate.updateTime = data.query.results.rate.Time;
console.log($scope.rate);
} else {
angular.forEach(data.query.results.rate, function (value, key){
$scope.rate = [];
$scope.rate.marketid = data.query.results.rate[key].id;
$scope.rate.rate = data.query.results.rate[key].Rate;
$scope.rate.updateTime = data.query.results.rate[key].Time;
console.log($scope.rate);
});
}
})
}
并检查数组长度只是因为我将另一个URL作为API。 我尝试在视图中显示但它失败了,因为用户可以填写芯片..但它之后也可乐。该视图仅显示可乐,因为它会因为循环而覆盖芯片。 我尝试了两种不同的方式
<tr ng-repeat="rate in rates track by $index">
<p>{{rate.marketid}} {{rate.rate}}</p>
<p>Last price update {{rate.updateTime}} </p>
</tr>
和
<tr ng-repeat="data.query.results.rate.id track by $index">
<p>{{$index + 1}}</p>
<p>{{rate.marketid}} {{rate.rate}}</p>
<p>Last price update {{rate.updateTime}} </p>
</tr>
两者都只显示可乐。这可能是因为scope.rate = []但我在使用我的代码以及如何修复它。使用PHP我经常使用像foreach($prices as $index=>pricing){code}
但我怎么能用angular做,或者有人有修复或示例代码。
答案 0 :(得分:1)
在你的循环中,你只是用最新的值替换前一个值,所以你最终只得到最后一个COLA值。
您需要将所有数组添加到数组中。 你可以简单地这样做
$scope.rates = data.query.results.rate
现在您有一个与API响应相同的数组。 循环使用
<tr ng-repeat="rate in rates">
<td>{{rate.id}} - {{rate.rate}}</td>
<td>Last price update {{rate.date}}</td>
</tr>
答案 1 :(得分:1)
我认为你是多次初始化数组。所以只需将for循环中的数组声明拉到外面。所以应该很好..
$scope.rate = []; // Pull this out of for Loop Like Below
$scope.refreshData = function() {
//Intialise Here
$scope.rate = [];
RateInfoService.getMarket($scope.alarmingMarket).success(function(data) {
if($scope.alarmingMarket.length <= 1){
$scope.rate = [];
$scope.rate.marketid = data.query.results.rate.id;
$scope.rate.rate = data.query.results.rate.Rate;
$scope.rate.updateTime = data.query.results.rate.Time;
console.log($scope.rate);
} else {
angular.forEach(data.query.results.rate, function (value, key){
//Instead of Here
$scope.rate.marketid = data.query.results.rate[key].id;
$scope.rate.rate = data.query.results.rate[key].Rate;
$scope.rate.updateTime = data.query.results.rate[key].Time;
console.log($scope.rate);
});
}
})
}
答案 2 :(得分:1)
答案非常简单,你做了一个误包我的朋友
你正在for循环中创建 $ scope.rate = [] 所以每次进入循环时它都会清空你的数组,所以for循环最后一个值将插入你的数组,你的循环停止,所以你只有可乐
<强>更新强>
请参阅此示例:Jersey download page
如果你使用表格进行ng-repate那么只有tr不工作你必须在它里面使用td在我的例子中看到我首先创建了两个表,但是第二个表正在工作。
注意:不要再次创建对象在范围内传递您的数据并使用 直接在ng-repate示例中:$ scope.dataObject =您的对象
参见示例。
的
的<table>
<tr ng-repeat="dataObject in data.results.rate">
<td>{{$index + 1}}</td>
<td>ID : {{dataObject.id}} - RATE: {{dataObject.Rate}}</td>
<td>Last price update {{dataObject.Time}}</td>
</tr>
</table>
的