全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

angular和BootStrap3实现购物车功能

一、页面搭建

1、html结构

采用BootStrap3来快速创建一个购物车表单样式。
主要功能:
A:列表数据所示
B:增加删除端口
C:清空购物车
D:商品数量的增减
E:动态计算商品价格以及总价

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
 <meta charset="UTF-8">
 <title>购物车</title>
 <link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css">
 <script src="../vendor/angular.js"></script>
 <script src="car-controller.js"></script>
</head>
<body>
 <div class="table-responsive container" ng-controller="CarCtrl">

  <table class="table " ng-show="data.length">
   <thead>
   <tr><th>产品编号</th><th>产品名字</th><th>购买数量</th><th>产品单价</th><th>产品总价</th><th>操作</th></tr>
   </thead>
   <tr ng-repeat="value in data">
    <td>{{value.id}}</td>
    <td>{{value.name}}</td>
    <td>
     <button class="btn btn-primary" ng-click="reduce(value.id)" >-</button>
     <input type="number" name="num" ng-model="value.quantity" id="num">
     <button class="btn btn-primary" ng-click="add(value.id)">+</button>
    </td>
    <td>{{value.price}}</td>
    <td>{{value.price*value.quantity}}</td>
    <td>
     <button class="btn btn-danger" ng-click="removeItem(value.id)">移除</button>
    </td>
   </tr>
   <tfoot>
   <tr>
    <td></td>
    <td>总购买数量 </td>
    <td>{{totalQuantity()}}</td>
    <td>总购买价</td>
    <td>{{totalPrice()}}</td>
    <td>
     <button class="btn btn-danger" ng-click="data=null">清空购物车</button>
    </td>
   </tr>
   </tfoot>
  </table>
  <p ng-show="!data.length">您的购物车为空</p>
 </div>
</body>
</html>

2、js逻辑部分

1 注册应用app
2 定义controller以即数据
3 在html中绑定应用以及controller,实现数据渲染

 var app=angular.module("app",[]);
 var carController=function($scope){
  $scope.data=[
   {
    id:1,
    name:'HuaWei',
    quantity:'2',
    price:4300
   },
   {
    id:2,
    name:'iphone7',
    quantity:'3',
    price:6300
   },
   {
    id:3,
    name:'XiaoMi',
    quantity:'3',
    price:2800
   },
   {
    id:4,
    name:'Oppo',
    quantity:'3',
    price:2100
   },
   {
    id:5,
    name:'Vivo',
    quantity:'3',
    price:2100
   }
  ]
 }

注意:

1、在html中通过ng-app注册应用,ng-controller来绑定控制器作用域,ng-repeat遍历商品数据data
2、在js中,angular提供了angular.forEach(obj,fn(item){})方法来遍历angular的数据,并可以在fn中对数据做进一步处理。此处计算总价便通过此方法

二、业务逻辑

1、总价计算操作

/*
   * 计算总价
   * @method: angular.forEach()
   * @param: 1. $scope.obj:要遍历的scope上的数据
   *   2. function(item){} 回调,在函数内部处理遍历的数据
   * */
  $scope.totalPrice=function(){
   var total=0;
   angular.forEach($scope.data,function(item){
    total+=item.quantity*item.price;
   })
   return total
  }
   /*计算总数量*/
  $scope.totalQuantity=function(){
   var total=0;
   angular.forEach($scope.data,function(item){
    total+=item.quantity;
   })
   return total
  }

说明:

1)、使用angular提供的forEach方法遍历当前数据,从而计算出所有数据的总价以及总数量

2、删除条目

 /*移除某项
  * @param:传入当前项的id作为参数,以确定移除哪一项
  * */
  $scope.removeItem=function(id){
   var index=findIndex();
   $scope.data.splice(index,1);
  }

说明:

1)、为代码利用,所以抽取出来findIndex()方法用于确定当前操作的项,代码如下:

/*查找当前操作的元素的位置*/
  function findIndex(id){
   var index=-1;
   angular.forEach($scope.data,function(value,key,obj){
    if(value.id===id){
     index=key;
     return index;
    }
   })
   return index;
  }

3.清空操作

在页面中,直接利用表达式,但data=null完成数据的清空操作

<tr>
 <td></td>
 <td>总购买数量 </td>
 <td>{{totalQuantity()}}</td>
 <td>总购买价</td>
 <td>{{totalPrice()}}</td>
 <td>
  <button class="btn btn-danger" ng-click="data=null">清空购物车</button>
 </td>
</tr>

4. 增加和删除商品数量

/*增加商品数量*/
  $scope.add=function(id){
   var index=findIndex($scope,id),
    item=$scope.data[index];
   item.quantity++;
  }
  /*减少商品数量
  * @description:
  * 减少当前项的数量,当仅剩一件时弹出对话框确认是否清空。是则调用removeItem方法清除当前项
  * */
  $scope.reduce=function(id){
   var index=findIndex($scope,id),
    item=$scope.data[index];
   if(item.quantity>1){ //判断当前项是否还能再减
    item.quantity--;
   }else{
    var makesure=confirm('确定要清空当前项吗??');
    if(makesure){
     $scope.removeItem(id)
    }
   }
  }

总结:
此demo主要利用了angular的数据双向绑定特性,从而大大的简化了操作。
关键点:

1)、angular.forEach(obj,fn(value,key,obj)) 迭代器
2)、ng-click指令绑定点击事件。使用ng-click会自动触发angular的脏检查机制从而实时的更新视图
3)、ng-repeat指令遍历数据,渲染页面
4)、ng-show指令:通过其值来判断是否显示(原理是给元素加nghide类名)

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


# angular  # 购物车  # 利用Angularjs和bootstrap实现购物车功能  # 使用Angular.js实现简单的购物车功能  # Angularjs 制作购物车功能实例代码  # Angular实现购物车计算示例代码  # AngularJS 购物车全选/取消全选功能的实现方法  # angular.js实现购物车功能  # angularjs实现简单的购物车功能  # AngularJS 实现购物车全选反选功能  # AngularJs 终极购物车(实例讲解)  # Angular动画实现的2种方式以及添加购物车动画实例代码  # 遍历  # 清空  # 绑定  # 移除  # 您的  # 弹出  # 大大的  # 所示  # 表单  # 中对  # 主要功能  # 能再  # 方法来  # 对话框  # 创建一个  # 回调  # 大家多多  # 计算出  # 为空 


相关文章: 建站与域名管理如何高效结合?  如何配置支付宝与微信支付功能?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何安全更换建站之星模板并保留数据?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何选择高效可靠的多用户建站源码资源?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  C#怎么创建控制台应用 C# Console App项目创建方法  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  建站之星官网登录失败?如何快速解决?  如何通过商城免费建站系统源码自定义网站主题?  如何在Windows环境下新建FTP站点并设置权限?  如何快速查询网址的建站时间与历史轨迹?  网站制作报价单模板图片,小松挖机官方网站报价?  详解jQuery停止动画——stop()方法的使用  建站VPS配置与SEO优化指南:关键词排名提升策略  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在万网开始建站?分步指南解析  建站主机与虚拟主机有何区别?如何选择最优方案?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  图册素材网站设计制作软件,图册的导出方式有几种?  济南网站制作的价格,历城一职专官方网站?  微信小程序 五星评分(包括半颗星评分)实例代码  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  建站之星安装后如何自定义网站颜色与字体?  Python lxml的etree和ElementTree有什么区别  公众号网站制作网页,微信公众号怎么制作?  ,怎么用自己头像做动态表情包?  官网网站制作腾讯审核要多久,联想路由器newifi官网  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  网站设计制作企业有哪些,抖音官网主页怎么设置?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何解决VPS建站LNMP环境配置常见问题?  seo网站制作优化,网站SEO优化步骤有哪些?  网站app免费制作软件,能免费看各大网站视频的手机app?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  成都网站制作报价公司,成都工业用气开户费用?  建站主机选哪家性价比最高?  广东企业建站网站优化与SEO营销核心策略指南  昆明网站制作哪家好,昆明公租房申请网上登录入口?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何快速搭建高效WAP手机网站?  建站上传速度慢?如何优化加速网站加载效率?  如何自定义建站之星模板颜色并下载新样式?  一键网站制作软件,义乌购一件代发流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。