angular.js实现购物车功能


Posted in Javascript onOctober 23, 2017

本文实例为大家分享了angular.js购物车功能的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>购物车</title>
  <script src="angularjs/angular.js"></script>
  <style>
    .box{
      width: 100%;
      border-bottom: 1px solid silver;
    }
    .box1{
      width: 100%;
      margin-top: 5px;
    }
    .box1 button{
      width: 100px;
      height: 40px;
      background: crimson;
      color: white;
      text-align: center;
      line-height: 40px;
      float: right;
      border: 0;
      border-radius: 13px;
    }
    table{
      width: 100%;
    }
    tr td button{
      background: blue;
      color: white;
      border: 0;
    }

  </style>
  <script>
    var my=angular.module("my",[]);
    my.controller("mys",function ($scope) {
      /*声明数据对象,初始化商品信息,数据自拟且不低于四条*/
      $scope.arr=[
        {name:"qq",price:12.9,number:2,state:false},
        {name:"wx",price:23.9,number:1,state:false},
        {name:"aa",price:99.9,number:1,state:false},
        {name:"bb",price:10.9,number:5,state:false}
      ];
      /*删除条目*/
      $scope.del=function (index) {
        if(confirm("确定移除此项嘛?")){
          $scope.arr.splice(index,1);
        }
      }
      /*点击”+”按钮输入框中的数量加1,同时可以计算出商品小计,和购物 车总价*/
      $scope.jia=function (index) {
        $scope.arr[index].number++;
      }
      /*当点击”-”按钮时输入框中的数量减1,商品小计和总价*/
      $scope.jian=function (index) {
        if($scope.arr[index].number>1){
          $scope.arr[index].number--;
        }
        else if($scope.arr[index].number==1){
          if(confirm("用户是否删除该商品")){
            $scope.arr.splice(index,1);
          }
        }
      }
      /*计算总价格*/
      $scope.allSum=function () {
        var allPrice=0;
        for(var i=0;i<$scope.arr.length;i++){
          allPrice+=$scope.arr[i].price*$scope.arr[i].number;
        }
        return allPrice;
      };
      /*清空购物车*/
      $scope.alldel=function () {
        if($scope.arr.length==0){
          alert("您的购物车已空");
        }else{
          $scope.arr=[];
        }
      }
      /*用户点击第一个checkbox代表全选,全选商品后点击删除选中商品,选中商品被删除,  若购物车商品被全部删除后*/
      $scope.allCheck=false;
      $scope.allx= function () {
        for(var i=0;i<$scope.arr.length;i++){
          if($scope.allCheck==true){
            $scope.arr[i].state=true;
          }else {
            $scope.arr[i].state=false;
          }
        }
      };
      /*每个复选框*/
      $scope.itemCheck = function () {
        var flag = 0;
        for(var i = 0; i<$scope.arr.length; i++){
          if($scope.arr[i].state == true){
            flag ++;
          }
        }
        if(flag == $scope.arr.length){
          $scope.allCheck = true;
        }else{
          $scope.allCheck = false;
        }
      };
      /*批量删除*/
      $scope.pi=function () {
        for(var i=0;i<$scope.arr.length;i++){
          if($scope.arr[i].state==true){
            $scope.arr.splice(i,1);
            i--;
            $scope.allCheck = false;
          }
        }
      }
    });
  </script>
</head>
<body ng-app="my" ng-controller="mys">
  <div class="box">
    <h2>我的购物车</h2>
  </div>
  <div class="box1">
    <button ng-click="alldel()" style="margin-right: 10px">清空购物车</button><button ng-click="pi()" style="margin-left: 5px">批量删除</button>
  </div>
  <div class="box2">
    <table border="1">
      <tr>
        <th><input type="checkbox" ng-model="allCheck" ng-click="allx()"/></th>
        <th>name</th>
        <th>price</th>
        <th>number</th>
        <th>totalPrice</th>
        <th>option</th>
      </tr>
      <!--用ng-repaet指令将对象遍历并渲染到页面中-->
      <tr ng-repeat="item in arr">
        <td><input type="checkbox" ng-model="item.state" ng-click="itemCheck()"/></td>
        <td>{{item.name}}</td>
        <td>{{item.price | currency:"¥:"}}</td>
        <td><button ng-click="jian($index)">-</button>
          <input type="text" value="{{item.number}}" style="width: 30px;padding-left: 20px"/>
          <button ng-click="jia($index)">+</button>
        </td>
        <td>{{item.price*item.number | currency:"¥:"}}</td>
        <td><button ng-click="del($index)">删除</button></td>
      </tr>
      <tr>
        <td colspan="6">总金额<span ng-bind="allSum()|currency:'¥:'"></span></td>
      </tr>
    </table>
  </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
基于JQuery的密码强度验证代码
Mar 01 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
Javascript使用SWFUpload进行多文件上传
Nov 16 Javascript
概述如何实现一个简单的浏览器端js模块加载器
Dec 07 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 13 Javascript
javascript实现商品图片放大镜
Nov 28 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 Javascript
JS实现4位随机验证码
Oct 19 Javascript
使用store来优化React组件的方法
Oct 23 #Javascript
node文件批量重命名的方法示例
Oct 23 #Javascript
详解vue 实例方法和数据
Oct 23 #Javascript
深入浅析javascript继承体系
Oct 23 #Javascript
Vue.js组件通信的几种姿势
Oct 23 #Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 #Javascript
JavaScript之创意时钟项目(实例讲解)
Oct 23 #Javascript
You might like
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
基于wordpress的ajax写法详解
2018/01/02 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python3.0 模拟用户登录,三次错误锁定的实例
2017/11/02 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python实现元素等待代码实例
2019/11/11 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
python语言是免费还是收费的?
2020/06/15 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
光电信息专业应届生求职信
2013/10/07 职场文书
成考报名单位证明范本
2014/01/16 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
2014年英语工作总结
2014/12/20 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
如何优化vue打包文件过大
2022/04/13 Vue.js