Angular JS从Ajax分配到范围然后计算

时间:2015-07-07 16:17:43

标签: javascript ajax angularjs

我需要从Ajax的数据中做一些计算并显示结果。

$timeout(function(){

        angular.forEach($scope.contactList,function(value,index){
            ...do something
        })

    }, 2000);

然后我有了这个:

[{"amount":150,"percent":15},{"amount":150,"percent":15}]

它工作正常,但这是最好的方法吗?有没有其他方法可以确保当我使用$ scope.contactList时它不会为null?

ajax调用结果:

cycle 1 - amount * percent = total 
cycle 2 - amount * percent = total2 


 $cope.grandtotal = total+total2

我需要循环 并且这样做

 <table ng-table="tableParams" class="table">
                <tr ng-repeat="user in $data">
                    <td data-title="'Pedido'" sortable="'Order_id'">
                        [[user.Order_id]]
                    </td>
                    <td data-title="'Producto'" sortable="'Product'">
                        [[user.Product]]
                    </td>
                    <td data-title="'QTY'" sortable="'amount'">
                        [[user.amount]]
                    </td>

                    <td data-title="'Descuento'" sortable="'percent'">
                        % [[user.percent]]
                    </td>
                    <td data-title="'Total pagar'" sortable="'percent'">


                        $  [[ (user.amount * user.cost)- (user.amount * user.cost)* 0.15]]
                    </td>
                </tr>

我知道我可以,例如使用自定义过滤器,但我使用的是ngTable,我无法正确使用。

Data.getOrder(2)
            .success(function(data)
            {
             $scope.contactList = data;
                    $scope.load = year+" "+nam;

               // processData()

             //

            }).then(function(){


            processData()

            })

function processData() {
            angular.forEach($scope.contactList, function(value, index) {
                alert(value.amount);
            });
        }

谢谢

更新

{{1}}

以上工作正常,它做得对吗?但是如何添加错误功能呢?

2 个答案:

答案 0 :(得分:0)

使用超时可能会导致问题。您已经知道数据何时可用,因此只需处理它。

def months_to_maturity_func(d1, d2):
    return abs((d2 - d1).months)

todays_date = datetime.date.today()

for (i,row) in df.iterrows():
    row['months_to_maturity'] = months_to_maturity_func(todays_date, datetime.datetime.strptime(row['maturity_dt'], '%Y-%b-%d %H:%M:%S'))

答案 1 :(得分:0)

ajax调用返回一个promise,所以你可以从你的ajax调用中返回promise; 使用.then()方法

 Data.getOrder(2)
        .then(function(data) {
             $scope.contactList = data;


        }).then(function(){

 angular.forEach($scope.contactList, function(value,index) {
            ...do something
        });
});