全网整合营销服务商

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

免费咨询热线: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种方式以及添加购物车动画实例代码  # 遍历  # 清空  # 绑定  # 移除  # 您的  # 弹出  # 大大的  # 所示  # 表单  # 中对  # 主要功能  # 能再  # 方法来  # 对话框  # 创建一个  # 回调  # 大家多多  # 计算出  # 为空 


相关文章: 高性价比服务器租赁——企业级配置与24小时运维服务  建站之星如何快速生成多端适配网站?  如何在IIS中配置站点IP、端口及主机头?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何彻底删除建站之星生成的Banner?  如何通过FTP服务器快速搭建网站?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何获取免费开源的自助建站系统源码?  浅析上传头像示例及其注意事项  建站之星后台密码如何安全设置与找回?  广德云建站网站建设方案与建站流程优化指南  表情包在线制作网站免费,表情包怎么弄?  如何通过云梦建站系统实现SEO快速优化?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  广州美橙建站如何快速搭建多端合一网站?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  jQuery 常见小例汇总  移民网站制作流程,怎么看加拿大移民官网?  如何选择香港主机高效搭建外贸独立站?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  电商网站制作公司有哪些,1688网是什么意思?  如何高效利用200m空间完成建站?  建站主机如何选?高性价比方案全解析  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何选择服务器才能高效搭建专属网站?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  ppt制作免费网站有哪些,ppt模板免费下载网站?  建站与域名管理如何高效结合?  北京的网站制作公司有哪些,哪个视频网站最好?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  想学网站制作怎么学,建立一个网站要花费多少?  建站之星安装步骤有哪些常见问题?  代购小票制作网站有哪些,购物小票的简要说明?  建站之星安装后如何配置SEO及设计样式?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何用PHP工具快速搭建高效网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何高效配置香港服务器实现快速建站?  建站主机空间推荐 高性价比配置与快速部署方案解析  香港服务器网站推广:SEO优化与外贸独立站搭建策略  如何在Golang中指定模块版本_使用go.mod控制版本号  详解jQuery中基本的动画方法  如何使用Golang安装API文档生成工具_快速生成接口文档  清除minerd进程的简单方法 

您的项目需求

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