• angularJS1笔记-(3)-购物车增删改查练习


    html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="../../vendor/bootstrap3/css/bootstrap.min.css">
    </head>
    <body ng-app="myApp">
    <div class="container">
        <table class="table" ng-controller="firstController" ng-show="cart.length">
            <thead>
            <tr>
                <th>产品编号</th>
                <th>产品名字</th>
                <th>购买数量</th>
                <th>产品单价</th>
                <th>产品总价</th>
                <th>操作</th>
            </tr>
            </thead>
            <tbody>
            <tr ng-repeat="item in cart">
                <td>{{item.id}}</td>
                <td>{{item.name}}</td>
                <td>
                    <button type="button" ng-click="reduce(item.id)" class="btn btn-primary">-</button>
                    <input type="text" value="item.quantity" ng-model="item.quantity"/>
                    <button type="button" ng-click="add(item.id)" class="btn btn-primary">+</button>
                </td>
                <td>{{item.price}}</td>
                <td>{{item.price*item.quantity}}</td>
                <td>
                    <button type="button" class="btn btn-primary" ng-click="remove(item.id)">移除</button>
                </td>
            </tr>
            <tr>
                <td>
                    总价:
                </td>
                <td>
                    {{totalPrice()}}
                </td>
                <td>
                    总购买数量:
                </td>
                <td>
                    {{totalCount()}}
                </td>
                <td colspan="2">
                    <button type="button" class="btn btn-primary" ng-click="cart = {}">清空购物车</button>
                </td>
            </tr>
            </tbody>
        </table>
        <p ng-show="!cart.length">您的购物车为空</p>
    </div>
    <script type="text/javascript" src="../../vendor/angular/angularJs.js"></script>
    <script type="text/javascript" src="app/index.js"></script>
    </body>
    </html>
    

    js:

    angular.module('myApp', []).controller('firstController', function ($scope) {
        $scope.cart = [
            {
                id: 1000,
                name: 'iphone7p',
                quantity: 2,
                price: 4999
            },
            {
                id: 1001,
                name: 'iphone4p',
                quantity: 2,
                price: 999
            },
            {
                id: 1002,
                name: 'iphone6p',
                quantity: 6,
                price: 3999
            },
            {
                id: 1003,
                name: 'iphoneSE',
                quantity: 20,
                price: 11999
            }
        ];
    
        //计算总价
        $scope.totalPrice = function () {
            var totalPrice = 0;
            angular.forEach($scope.cart, function (item) {
                totalPrice += parseInt(item.quantity) * item.price;
            })
            return totalPrice;
        }
        //计算总购买数量
        $scope.totalCount = function () {
            var totalCount = 0;
            angular.forEach($scope.cart, function (item) {
                totalCount += parseInt(item.quantity);
            })
            return totalCount;
        }
        //移除
        $scope.remove = function (id) {
            var index = -1;
            angular.forEach($scope.cart, function (item, key) {
                if (item.id == id) {
                    index = key;
                }
            })
            if (index != -1) {
                $scope.cart.splice(index, 1);
            }
        }
    
        //找索引 因为angular的机制是通过索引来删除
        var findIndex = function (id) {
            var index = -1;
            angular.forEach($scope.cart, function (item, key) {
                if (item.id == id) {
                    index = key;
                    return;
                }
            });
            return index;
        }
    
        //添加
        $scope.add = function (id) {
            var index = findIndex(id);
            if (index != -1) {
    
                ++$scope.cart[index].quantity;
            }
        }
        //删除
        $scope.reduce = function (id) {
    
            var index = findIndex(id);
    
            if (index != -1) {
                var item = $scope.cart[index];
                if(item.quantity>1){
                    --item.quantity;
                }else {
                    var returnKey = confirm('从购物车中删除该商品吗?')
                    if (returnKey) {
                        $scope.cart.splice(index, 1);
                    }
                }
            }
        }
    
        $scope.$watch('cart',function (newValue,oldValue) {
            angular.forEach(newValue,function (item, key) {
                if(item.quantity<1){
                    var returnKey = confirm('是否从购物车内删除该产品?');
                    if(returnKey){
                        $scope.cart.splice(key, 1);
                    }else{
                        item.quantity = oldValue[key].quantity;
                    }
                }
            })
        },true);
    });
    

     最终结果:

    因为angular是MVVM模式的双向绑定数据,所以当你改变其中变量的时候其他地方凡是用到了此变量地方都会跟着变。

  • 相关阅读:
    Rust 变量
    Rust-lang(hello world 续)
    Rust-lang(hello world)
    Java 1.8 ASM ClassReader failed to parse class file
    Sqoop使用笔记
    Jstorm
    从flume到kafka,日志收集
    vim-3-插件管理
    vim-2-使用进阶
    Git-Repo-Gerrit-1-Git介绍,安装和配置
  • 原文地址:https://www.cnblogs.com/yk123/p/6782088.html
Copyright © 2020-2023  润新知