实现购物车页面结算功能

<!doctype html>
<html ng-app="myApp">
<head>
    <meta charset="utf-8">
    <title>实现购物车结算功能</title>
    <style>
        .cursors{cursor:pointer}
    </style>
    <script src="../js/jquery-2.1.0.js"></script>
    <script src="../js/angular.js"></script>
    <script>
        var A=angular.module('myApp',[]);
        //购物车  加
        A.directive('myAdds',function(){
            return {
                link:function(scope, element, attr){
                    element.click(function(){
                        var This=this
                        angular.forEach(scope.dataList,function(data,index,array){
                            if(attr.items==data.items){
                                data.num=parseInt(data.num)+1;
                                scope.allPrices();
                                scope.$apply() //刷新视图
                            }

                        });
                    });
                }
            }
        })
        //购物车  减
        A.directive('myMinus',function(){
            return {
                link:function(scope, element, attr){
                    element.click(function(){
                        var This=this
                        angular.forEach(scope.dataList,function(data,index,array){

                            if(attr.items==data.items){

                                if(data.num<=1){

                                    if(confirm('是否删除该产品')){
                                        data.num=0;
                                        $(This).siblings('input').val(0);
                                        scope.allPrices();
                                        scope.$apply();
                                        //delete array[index];
                                        scope.dataList.splice(index,1)
                                        $(This).parents('tr').remove();
                                    }

                                }else{
                                    data.num=parseInt(data.num)-1;
                                };

                                scope.allPrices();
                                scope.$apply();
                            }
                        });
                    });
                }
            }
        })
        //全选,全不选
        A.directive('allOrcan',function(){
            return function(scope, element, attr){
                element.click(function(){
                    var isCheck=$(this).find('input').prop('checked');
                    if(isCheck){
                        $('input[type=checkbox]').prop('checked',true);
                    }else{
                        $('input[type=checkbox]').not($('input[type=checkbox]').eq(0)).prop('checked',false);
                    }
                    angular.forEach(scope.dataList,function(data,index,array){
                        data.Bol=isCheck;
                    })
                    scope.allPrices();
                    scope.$apply();
                })
            }
        })
        //单选
        A.directive('oneCheck',function(){
            return function(scope, element, attr){
                element.click(function(){
                    var This=this
                    angular.forEach(scope.dataList,function(data,index,array){
                        if(attr.items==data.items){
                            var isCheck=$(This).prop('checked');
                            data.Bol=isCheck;
                            scope.allPrices();
                            scope.$apply();
                        }
                    })
                });
            }
        })
        A.controller('myAngular',['$scope','$filter',function($scope,$filter){
            $scope.dataList=[//初始化购物车的数据
                {Bol:'false',name:'洗衣机',num:'1',items:'0',oneprice:'900',price:''},
                {Bol:'false',name:'热水器',num:'1',items:'1',oneprice:'110',price:''},
                {Bol:'false',name:'空调',num:'1',items:'2',oneprice:'116',price:''},
                {Bol:'false',name:'冰箱',num:'1',items:'3',oneprice:'2087',price:''},
                {Bol:'false',name:'电磁炉',num:'1',items:'4',oneprice:'135',price:''},
                {Bol:'false',name:'被子',num:'1',items:'5',oneprice:'50',price:''},
                {Bol:'false',name:'本子',num:'1',items:'6',oneprice:'2',price:''},
                {Bol:'false',name:'笔',num:'1',items:'7',oneprice:'115',price:''},
                {Bol:'false',name:'杯子',num:'1',items:'8',oneprice:'12',price:''},
                {Bol:'false',name:'书',num:'1',items:'9',oneprice:'5',price:''},
                {Bol:'false',name:'零食',num:'1',items:'10',oneprice:'13',price:''}
            ];
            //总价格的计算
            $scope.allPrices=function(){
                $scope.allprice=0;
                angular.forEach($scope.dataList,function(data,index,array){
                    data.price=data.num*data.oneprice;
                    if(data.Bol==true){
                        $scope.allprice+=parseInt(data.price);
                    }
                })


                return $scope.allprice;
            };

            //按单价排序
            $scope.CartSort=function(arg){
                angular.forEach($scope.dataList,function(data,index,array){
                    arguments.callee['CartSort('+arg+')']=!arguments.callee['CartSort('+arg+')']
                    $scope.dataList=$filter('orderBy')($scope.dataList,arg,arguments.callee['CartSort('+arg+')'])
                })

            }
        }])
    </script>
</head>


<body ng-controller="myAngular">
    <center>
        <table border="1" cellpadding="1" cellspacing="0" >
            <tr align="center">
                <td><label all-orcan><input type="checkbox">全选/取消全选 </label></td>
                <td>名称</td>
                <td>数量</td>
                <td ng-click='CartSort("oneprice")'>单价</td>
                <td>价格</td>
            </tr>
            <tr ng-repeat="data in dataList">
                <td><input type="checkbox" one-check items={{data.items}}></td>
                <td ng-cloak>{{data.name}}</td>
                <td><input type="text" ng-cloak ng-model="data.num"  items="{{data.items}}" style="width:50px;text-align:center;">  <button my-adds items="{{data.items}}" ng-class="{cursors:true}" >+</button>  <button my-minus items="{{data.items}}" ng-class="{cursors:true}" >-</button> </td>
                <td ng-cloak>{{data.oneprice}}</td>
                <td ng-cloak>{{data.price}}</td>
            </tr>

        </table>
        <div>总价格:{{allPrices()}}</div>
    </center>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值