虽然loop在angularjs中无法正常工作

时间:2014-11-24 10:15:11

标签: javascript angularjs

我正在尝试在Angular中使用while循环。 如果我在while循环中使用alert,它会给出相同的数量输出。但我删除alert,数量不同。所以我的代码出了什么问题。

var quantity= $scope.quantity;
var i=0;
while(i< quantity)
        {
                        order.createOrderLineItem( localStorage.getItem( "orderID" ), itemStr, undefined, $scope.errorCallback )
                .success(function(data){
                $scope.lineItemID = data.id;

                alert("i:"+i);
                var orderLineItemData = {};
                if( $scope.cusNote == "" )
                {
                    var existedNote = data.note || "";
                    orderLineItemData = {
                        "unitQty": $scope.quantity,
                        "note": existedNote,
                    };

                    //if adding taxRates 0, clover will returns error
                    if($scope.taxRates !== 0) {
                        orderLineItemData.taxRates = $scope.taxRates;
                    }
                }
                else
                {
                    var customerNote = "";

                    if( data.note != undefined && data.note != null ) customerNote = data.note;

                    customerNote = customerNote + "#order-request-[";
                    customerNote = customerNote + $scope.cusNote;
                    customerNote = customerNote + "]";
                    customerNote = customerNote.replace(/\\/g, '\\\\');
                    customerNote = customerNote.replace(/\"/g, '\\"');

                    console.log( "customerNote:" + customerNote );

                    orderLineItemData = {
                        "unitQty":$scope.quantity,
                        "note": customerNote,
                        "taxRates": $scope.taxRates
                    }
                }

                order.updateOrderLineItem( localStorage.getItem( "orderID" ), $scope.lineItemID, JSON.stringify(orderLineItemData), undefined, $scope.errorCallback )
                    .success( function( data ){
                        if( $scope.modCount == 0 )
                        {
                            location.href = "/" + $routeParams.slug;
                        }

                        $scope.addModifierItem( $scope.lineItemID );
                    });
            });
            i++;
        }

那么如何更正此代码?

1 个答案:

答案 0 :(得分:0)

我不确定,警报可能就是这个原因。您可以尝试使用console.log("i:"+i);而不是警报。由于弹出窗口,当您使用警报时,浏览器可能会中断。

- 编辑 -

这是您需要在应用程序中实现的服务。您将需要在成功时通知此服务,它将触发在通知

之后执行的任何观察
 app.service('checkService',['$q',function($q){
        var checkRequest = $q.defer();

        this.notifyRequestIsDone= function(){
            checkRequest .notify();
        };

        this.observeRequestStatus = function(){
            return checkRequest .promise;
        };
    }]);

以下是代码示例,将上面的代码添加到您的控制器中,您需要在请求完成后增加值

checkService.observeRequestStatus ().then(null,null,function(){
    //... Your code
});