在浏览器上,之前的值正在重置

时间:2017-04-26 10:15:20

标签: javascript angularjs

我正在开发购物车应用程序。将产品添加到购物车后,我允许用户更改产品数量,这将影响产品总价和产品总数。我还有一个文本字段用于输入优惠券代码并对总计应用折扣。之后我将重定向到订单摘要页面。如果我使用浏览器后退按钮返回购物车列表页面,我在该页面中所做的更改(如增加/减少数量,添加折扣优惠券等等)未显示,而是显示我的价格当我第一次被重定向到具有初始数量和价格的购物车列表页面时。

我在下面分享我的代码。当我使用浏览器后退按钮返回此页面时,请帮助我了解阻止我的修改的方法。

价格计算全部在该页面的控制器中完成,价格更新在观察者内部完成(这是我无法阻止新修改的原因)。

controller.js

// to get the price update when the cart list page is loaded from product list/details page
if($rootScope.cart.length > 0){
            for (var i = 0; i < $rootScope.cart.length; i++) {
                $rootScope.products[i].p_price = $rootScope.products[i].p_quantity * $rootScope.products[i].p_originalprice;
                $rootScope.arrGrandTotal.push($rootScope.products[i].p_price);
                $scope.grandTotal += $rootScope.arrGrandTotal[i];
            }
            //$scope.totalUpdate = $scope.grandTotal;
            //console.log("$rootScope.grandTotal :"+$scope.grandTotal);
        }

// this function is fired when product quantity text field is updated with new product quantity
$scope.updateJson = function($index){               
            $rootScope.cart[$index].p_price = $rootScope.cart[$index].p_quantity * $rootScope.cart[$index].p_originalprice;
        }

// watching the array inside which the products added in cart are pushed. From this array I am getting the product price 
$scope.$watch('cart', function(newValue, oldValue){
            for(var i=0; i<$rootScope.cart.length; i++){
                if(newValue[i].p_price != oldValue[i].p_price){
                    if(newValue[i].p_price > oldValue[i].p_price){
                        $scope.grandTotal += (newValue[i].p_price - oldValue[i].p_price);
                    } else {
                        $scope.grandTotal -= (oldValue[i].p_price - newValue[i].p_price);
                    }
                }                   
            }
        }, true);

view.html

<input type="text" class="text-center form-control input-sm" ng-model="eachAddedProd.p_quantity" ng-change="updateJson($index)">

<div class="row">
                    <div class="text-center">
                        <div class="col-sm-9">
                            <h6 class="text-right">Do you have a coupon code? if not go <a href="https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=coupon+code" target="_blank">here</a></h6>
                        </div>
                        <div class="col-sm-3">
                            <div class="col-sm-6">
                                <input class="form-control coupon-entry" type="text" name="" value="" maxlength="9" ng-model="coupon">
                            </div>
                            <div class="col-sm-6">
                                <div class="row"><button type="button" class="btn btn-default btn-block" ng-click="couponCode()">Apply Code</button></div>
                            </div>                                
                        </div>
                    </div>
                </div>

<div class="panel-footer">
                <div class="row text-center">
                    <div class="col-sm-10">
                        <h4 class="text-right">Total <strong ng-class="{'old-price' : strikePrice}">{{grandTotal | currency}}</strong> <strong ng-hide="discountedPrice">{{discountPrice | currency}}</strong></h4>
                    </div>
                    <div class="col-sm-2">
                        <button type="button" class="btn btn-success btn-block" ng-click="gotoInvoice()">
                            Checkout
                        </button>
                    </div>
                </div>
            </div>

如果我清楚我的问题,请告诉我,否则你无法找到解决此问题的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以在Cookie或本地存储中保留您的价值。