zoukankan      html  css  js  c++  java
  • angularJS商品购物车案例

    <!DOCTYPE html>
    <html ng-app="shopping">
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="bootstrap-3.3.4-dist/css/bootstrap.css"/>
        <style type="text/css">
            .orderSelect
            {
                color: red;
            }
        </style>
    </head>
    <body>
        <div class="container">
         <div ng-controller="goodsList">
             <nav class="navbar navbar-default" role="navigation">
                 <form class="navbar-form navbar-left" role="search">
                     <input type="text" ng-model="search" class="form-control" placeholder="搜索">
                 </form>
             </nav>
             <table class="table table-bordered table-hover" ng-show="goods.length">
                <thead>
                 <tr class="success">
                     <!--ng-class="{dropup: order===''}"的这个部分order===''是一个表达式如果为真则添加前面的样式-->
                     <th ng-click="orderGoods('id')" ng-class="{dropup: order===''}">
                         产品编号<span class="caret"  ng-class="{orderSelect: orderType==='id'}" ></span>
                     </th>
                     <th ng-click="orderGoods('name')" ng-class="{dropup: order===''}">
                         产品名字<span class="caret" ng-class="{orderSelect: orderType==='name'}" ></span>
                     </th>
                     <th ng-click="orderGoods('sum')" ng-class="{dropup: order===''}">
                         购买数量<span class="caret"  ng-class="{orderSelect: orderType==='sum'}"></span>
                     </th>
                     <th ng-click="orderGoods('unitPrice')" ng-class="{dropup: order===''}">
                         产品单价<span class="caret" ng-class="{orderSelect: orderType==='unitPrice'}" ></span>
                     </th>
                     <th ng-click="orderGoods('unitPrice * sum')" ng-class="{dropup: order===''}">
                         产品总价<span class="caret" ng-class="{orderSelect: orderType==='unitPrice * sum'}" ></span>
                     </th>
                     <th>
                         操作
                     </th>
                 </tr>
                </thead>
                <tbody>
                    <!--可以使用过滤器提供搜索功能->filter: {name:search}-->
                    <tr class="info" ng-repeat="item in goods | filter: {name:search} | orderBy: order + orderType">
                        <td><span ng-bind="item.id"></span></td>
                        <td><span ng-bind="item.name"></span></td>
                        <td>
                            <input type="button" value="-" class="btn" ng-click="subNumber(item.id)"/>
                            <input type="text" class="text-center" ng-model="item.sum"/>
                            <input type="button" value="+" class="btn" ng-click="addNumber(item.id)"/>
                        </td>
                        <!--过滤器 {{xxx | currency:'¥ '}}-->
                        <td><span ng-bind="item.unitPrice | currency:'¥ '"></span></td>
                        <td><span ng-bind="item.sum * item.unitPrice | currency:'¥ '"></span></td>
                        <td><input type="button" value="移除" class="btn btn-danger" ng-click="remove(item.id)"/></td>
                    </tr>
                    <tr class="warning">
                        <td colspan="2">购买总价:<span ng-bind="sumPricesFn() | currency:'¥ '"></span></td>
                        <td colspan="2">购买总数:<span ng-bind="sumFn()"></span></td>
                        <td colspan="2"><input type="button" value="清空购物车" class="btn btn-danger" ng-click="clear()"/></td>
                    </tr>
                </tbody>
             </table>
            <div ng-show="!goods.length">您的购物车为空!</div>
         </div>
        </div>
    </body>
    <script src="../angular.js"></script>
    <script>
        var app=angular.module("shopping",[]);
        app.controller("goodsList", function($scope){
            $scope.goods=[
                {
                    id:1,
                    name:'苹果6Plus',
                    sum:3,
                    unitPrice:5000
                },
                {
                    id:2,
                    name:'苹果5s',
                    sum:1,
                    unitPrice:4000
                },
                {
                    id:3,
                    name:'lenovo P404',
                    sum:1,
                    unitPrice:3899
                },
                {
                    id:4,
                    name:'飞科剃须刀f77',
                    sum:10,
                    unitPrice:100
                },
                {
                    id:5,
                    name:'情侣体恤',
                    sum:2,
                    unitPrice:110
                }
            ];
            //单件商品总价
            $scope.sumPricesFn = function(){
                var sumPrices = 0;
                angular.forEach($scope.goods,function(item){
                    sumPrices += item.sum * item.unitPrice;
                });
                return sumPrices;
            };
            //单件商品总数
            $scope.sumFn = function(){
                var sum = 0;
                angular.forEach($scope.goods,function(item){
                    sum += Number(item.sum);
                });
                return sum;
            };
            var getIndex = function(id){
                var stateIndex = -1;
                angular.forEach($scope.goods, function(item, index){
                    if(id === item.id){
                        stateIndex = index;
                    }
                });
                return stateIndex;
            }
            //移除方法
            $scope.remove = function(id){
                var tmpGoodIndex = getIndex(id);
                if(tmpGoodIndex !== -1){
                    //将从索引位置为stateIndex删除一个值
                    $scope.goods.splice(tmpGoodIndex, 1);
                }
            };
            //清空购物车方法
            $scope.clear = function(){
                $scope.goods=[];
            }
            //增加商品数量
            $scope.addNumber = function(id){
                var tmpGoodIndex = getIndex(id);
                if(tmpGoodIndex !== -1){
                    ++$scope.goods[tmpGoodIndex].sum;
                }
            };
            //减少商品数量
            $scope.subNumber = function(id){
                var tmpGoodIndex = getIndex(id);
                if(tmpGoodIndex !== -1){
                    --$scope.goods[tmpGoodIndex].sum;
                }
            };
    
            $scope.$watch('goods', function(newVal, oldVal){
                angular.forEach(newVal,function(item, index){
                    //监听商品信息如果为非法字符那么回归原来的商品数量
                    if(isNaN(item.sum) || item.sum < 0){
                        item.sum = oldVal[index].sum;
                    }
                });
            },true);
            //列表排序
            /*
            * $scope.order = '-';这个'-'代表倒序
            * */
            $scope.order = '-';
            $scope.orderType = 'id';
            $scope.orderGoods = function(type){
                if($scope.order === '-'){
                    $scope.order = '';
                } else {
                    $scope.order = '-';
                }
                $scope.orderType = type;
            };
        });
    </script>
    </html>
  • 相关阅读:
    02-Maven安装配置
    01-Maven功能特点
    安装Jenkins服务
    Python操作Saltstack
    基于Python自动上传包到nexus仓库
    避免代码merge后无法构建发布(GItlabCI + Jenkins)
    SonarQube-Centos环境设置为系统服务
    SonarQube配置LDAP认证集成
    Centos7 搭建Go语言编译环境
    OpenShift-EFK日志管理
  • 原文地址:https://www.cnblogs.com/zzq-include/p/4498291.html
Copyright © 2011-2022 走看看