Angularjs Controller设置与对象不同的值而不是已分配

时间:2017-09-09 10:06:05

标签: javascript angularjs arrays rest

在我正在处理的其中一个项目中,我从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
        }
    ]
}

我附上了控制台截图供您参考 Screenshot

2 个答案:

答案 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

如果此解决方案有帮助,请批准答案