• 终极购物车


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="css/style.css">
        <script src="angular.js"></script>
        <script>
            var app = angular.module("app", []);
            app.controller("myCtrl", function ($scope) {
                /*模拟三条数据*/
                $scope.items = [
                    {"name": "qq", "price": 12, "number": 3,"number2":3},
                    {"name": "wx", "price": 23, "number": 2,"number2":2},
                    {"name": "wx", "price": 99, "number": 5,"number2":5},
                    {"name": "嘿嘿", "price": 66, "number": 3,"number2":3},
                ]
    
                /*计算总价的方法*/
                $scope.sum = function () {
                    $scope.sumMoney = 0;
                    for (var i = 0; i < $scope.items.length; i++) {
                        $scope.sumMoney += $scope.items[i].price * $scope.items[i].number;
                    }
                    return $scope.sumMoney;
                }
    
                /*删除单条目商品的监听事件*/
                $scope.del_btn = function ($index) {
                    /*根据索引值进行删除数据*/
                    if (confirm("您是否将该商品移除购物车吗?")) {
                        $scope.items.splice($index, 1);
                    } else {
                        // 取消删除的操作
                    }
                }
    
                /*减少number数量的按钮监听事件*/
                $scope.jian = function ($index) {
                    // 对点击的索引进行移除指定的number数量
                    // 首先判断<0的时候停止减少
                    if ($scope.items[$index].number == 1) {
                        if(confirm("亲,是否删除该商品?")){
                            // 如果点击确定 则删除该条目
                            $scope.items.splice($index,1);
                        }else{
                            // 取消时 商品数量恢复原来的数量
                            $scope.items[$index].number = $scope.items[$index].number2;
                        }
                    } else {
                        // number数量大于0 即可减少
                        $scope.items[$index].number--;
                    }
                };
    
                /*增加number数量的按钮监听事件*/
                $scope.add = function ($index) {
                    // 每次单击 增加number数量
                    $scope.items[$index].number++;
                };
    
                /*全选多选框的监听事件*/
                $scope.bigCheck = function (bigisno) {
                    // 如果点击了全选按钮 则全选全部的check按钮 取消则反选
                    $scope.isno = ! $scope.isno;
                };
    
    
                /*清空购物车的监听事件*/
                $scope.delAll = function () {
                    // 首先判断全选框是否选中
                    if($scope.bigcheck){
                        // 给用户一个温馨提示 判断是否选中
                        if(confirm("您确定要清空购物车吗?")){
                            // 如果判断为全选时 进行清空购物车
                            $scope.items.splice(0,$scope.items.length);
                            // 显示购物车为空 同时隐藏其他布局
                            $scope.isnide = true;
                        }
                    }else{
                        // 如果选中了一项以上,则根据选中的进行清空
                        if($scope.arr != ""){
                            for(var i = 0 ; i < $scope.items.length; i++){
                                for (var j = 0 ; j < $scope.arr.length; j++){
                                    if($scope.items[i].name == $scope.arr[j]){
                                        // 根据arr数组里保存的名字 进行遍历删除指定条目的数据
                                        $scope.items.splice(i,1);
                                    }
                                }
                            }
                        }else{
                            alert("亲,至少选择一项!");
                        }
                    }
                };
    
                $scope.tab_ishide = true;
    
                /*监听小复选框的监听事件*/
                $scope.arr = [];
                $scope.isno = false;
                $scope.smallcheck = function (isno,index,name) {
                    // 首先判断是否选中
                    if(isno){
                        $scope.arr.push(name);
                    }else{
                        // 取消选中则移除指定索引的数据
                        for (var i = 0 ; i < $scope.arr.length; i++){
                            if($scope.arr[i] == name){
                                $scope.arr.splice(i,1);
                            }
                        }
                    }
                }
    
            });
    
    
        </script>
    </head>
    <body ng-app="app" ng-controller="myCtrl">
    
    <div>
        <h1>我的购物车</h1>
        <hr>
        <button class="btn1" ng-click="delAll()">清空购物车</button>
        <table>
            <thead>
            <tr>
                <th><input type="checkbox" ng-model="bigcheck" ng-click="bigCheck()"></th>
                <th>name</th>
                <th>price</th>
                <th>number</th>
                <th>totalPrice</th>
                <th>option</th>
            </tr>
            </thead>
            <tbody>
            <tr ng-repeat="item in items">
                <td><input type="checkbox" ng-model="isno" ng-click="smallcheck(isno,$index,item.name)"></td>
                <td>{{item.name}}</td>
                <td>{{item.price| currency:'¥'}}</td>
                <td>
                    <button class="number_button" ng-click="jian($index)">-</button>
                    <span><input type="number" ng-model="item.number" style=" 30px"></span>
                    <button class="number_button" ng-click="add($index)">+</button>
                </td>
                <td>{{item.number * item.price | currency:'¥'}}</td>
                <td>
                    <button ng-click="del_btn($index)" class="small_button">删除</button>
                </td>
            </tr>
            <tr>
                <td colspan="6">总价为:<span ng-bind="sum() | currency:'¥'"></span></td>
            </tr>
            </tbody>
        </table>
    </div>
    
    <div ng-if="isnide">
        <p>您的购物车为空,<a href="#">去逛逛</a></p>
    </div>
    </body>
    </html>
    

      

  • 相关阅读:
    模型分离(选做)
    密码保护
    实现搜索功能
    完成个人中心—导航标签
    个人中心标签页导航
    评论列表显示及排序,个人中心显示
    完成评论功能
    从首页问答标题到问答详情页
    运行Junit单测时遇到的问题
    spring定时任务执行两次的原因与解决方法
  • 原文地址:https://www.cnblogs.com/wsq110/p/7723697.html
Copyright © 2020-2023  润新知