在我正在处理的其中一个项目中,我从REST API获取Invoice Items并将它们填入各自的字段中。但是发生了一些不寻常的事情。当我尝试分配从REST发送的浮点值时,angular将其指定为0.
要清楚地解释我的问题,请考虑以下
$scope.commodities = {
items: [],
total: 0,
total_gst: 0
};
for (var i = 0; i < $scope.output.data.length; i++) { //$scope.output is the response from REST API
var itms = {};
itms.item_description = $scope.output.data[i].item_description;
itms.currency = $scope.output.data[i].currency;
itms.amount = parseFloat($scope.output.data[i].amount);
itms.ex_rate = parseFloat($scope.output.data[i].ex_rate);
itms.tax = parseFloat($scope.output.data[i].tax);
itms.quantity = parseFloat($scope.output.data[i].quantity);
itms.total_without_gst = parseFloat($scope.output.data[i].total_without_gst);
itms.gst = parseFloat($scope.output.data[i].gst);
itms.total_with_gst = parseFloat($scope.output.data[i].total_with_gst);
console.log(itms.total_without_gst); //displays correct value
console.log(itms) //displays total_with_gst,total_without_gst as 0
$scope.commodities.items.push(itms);
}
REST API响应
{
"status": true,
"data": [
{
"item_description": "Ocean freight",
"currency": "USD",
"tax": 0,
"amount": 150,
"ex_rate": 4.42,
"quantity": 1,
"total_without_gst": 663,
"gst": 0,
"total_with_gst": 663
},
{
"item_description": "DG charges",
"currency": "USD",
"tax": 0,
"amount": 80,
"ex_rate": 4.42,
"quantity": 1,
"total_without_gst": 353.6,
"gst": 0,
"total_with_gst": 353.6
}
]
}
答案 0 :(得分:0)
不幸的是我无法发表评论(需要50个代表),所以我现在将其作为答案。根据我从数据中收集的内容和parseFloat(https://www.w3schools.com/jsref/jsref_parsefloat.asp)的定义,您将发送实际的浮点值或数字,但是parseFloat会从字符串中解析浮点值。您是否可以直接指定浮点值?
答案 1 :(得分:0)
在你的情况下,我猜问题是你正在使用的for循环,理想情况下,如果你使用的是angularjs,那么你应该使用angular.forEach而不是正常的循环。
angular.forEach("$scope.output.data", function(object){
});
这是小提琴链接,我使用了与REST相同的对象,并将其解析并显示在html页面上。
这是链接:Fiddle Link
如果此解决方案有帮助,请批准答案