Angularjs 制作购物车功能实例代码


Posted in Javascript onSeptember 14, 2016

初学angularJS   闲暇之余做了个小案例。

功能:计算购物车商品的价格,以及删除购物车商品。

以下是完整案例(jQuery和angularjs需要自己引入)

<!doctype html>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
.cursors{cursor:pointer}
</style>
<script src="js/jquery-1.11.1.js"></script>
<script src="js/angular.min.js"></script>


<script>




var A=angular.module('myApp',[]);
//购物车 加
A.directive('myAdds',function(){
return {
link:function(scope, element, attr){
element.click(function(){
var This=this
angular.forEach(scope.dataList,function(data,index,array){
if(attr.items==data.items){
data.num=parseInt(data.num)+1;
scope.allPrices();
scope.$apply() //刷新视图
}

});
});
} 
}
})
//购物车 减
A.directive('myMinus',function(){
return {
link:function(scope, element, attr){
element.click(function(){
var This=this
angular.forEach(scope.dataList,function(data,index,array){

if(attr.items==data.items){

if(data.num<=1){

if(confirm('是否删除该产品')){
data.num=0;
$(This).siblings('input').val(0);
scope.allPrices();
scope.$apply();
//delete array[index];
scope.dataList.splice(index,1)
$(This).parents('tr').remove();
}

}else{
data.num=parseInt(data.num)-1;
};

scope.allPrices();
scope.$apply();
}
});
});
} 
}
})
//全选,全不选
A.directive('allOrcan',function(){
return function(scope, element, attr){
element.click(function(){
var isCheck=$(this).find('input').prop('checked');
if(isCheck){
$('input[type=checkbox]').prop('checked',true);
}else{
$('input[type=checkbox]').not($('input[type=checkbox]').eq(0)).prop('checked',false);
}
angular.forEach(scope.dataList,function(data,index,array){
data.Bol=isCheck;
})
scope.allPrices();
scope.$apply();
})
}
})
//单选
A.directive('oneCheck',function(){
return function(scope, element, attr){
element.click(function(){
var This=this
angular.forEach(scope.dataList,function(data,index,array){
if(attr.items==data.items){
var isCheck=$(This).prop('checked');
data.Bol=isCheck;
scope.allPrices();
scope.$apply();
}
})
});
}
})






A.controller('myAngular',['$scope','$filter',function($scope,$filter){
$scope.dataList=[//初始化购物车的数据
{Bol:'false',name:'洗衣机',num:'1',items:'0',oneprice:'900',price:''},
{Bol:'false',name:'热水器',num:'1',items:'1',oneprice:'110',price:''},
{Bol:'false',name:'空调',num:'1',items:'2',oneprice:'116',price:''},
{Bol:'false',name:'冰箱',num:'1',items:'3',oneprice:'2087',price:''},
{Bol:'false',name:'电磁炉',num:'1',items:'4',oneprice:'135',price:''},
{Bol:'false',name:'被子',num:'1',items:'5',oneprice:'50',price:''},
{Bol:'false',name:'本子',num:'1',items:'6',oneprice:'2',price:''},
{Bol:'false',name:'笔',num:'1',items:'7',oneprice:'115',price:''},
{Bol:'false',name:'杯子',num:'1',items:'8',oneprice:'12',price:''},
{Bol:'false',name:'书',num:'1',items:'9',oneprice:'5',price:''},
{Bol:'false',name:'零食',num:'1',items:'10',oneprice:'13',price:''}
];
//总价格的计算
$scope.allPrices=function(){
$scope.allprice=0;
angular.forEach($scope.dataList,function(data,index,array){
data.price=data.num*data.oneprice;
if(data.Bol==true){
$scope.allprice+=parseInt(data.price);
}
})


return $scope.allprice;
};

//按单价排序
$scope.CartSort=function(arg){
angular.forEach($scope.dataList,function(data,index,array){
arguments.callee['CartSort('+arg+')']=!arguments.callee['CartSort('+arg+')']
$scope.dataList=$filter('orderBy')($scope.dataList,arg,arguments.callee['CartSort('+arg+')'])
})

}




}])
</script>
</head>


<body ng-controller="myAngular">
<table border="1">
   <tr>
     <td><label all-orcan><input type="checkbox">全选/取消全选 </label></td>
     <td>名称</td>
     <td>数量</td>
     <td ng-click='CartSort("oneprice")'>单价</td>
     <td>价格</td>
    </tr>
   <tr ng-repeat="data in dataList">
     <td><input type="checkbox" one-check items={{data.items}}></td>
     <td ng-cloak>{{data.name}}</td>
     <td><input type="text" ng-cloak ng-model="data.num" items="{{data.items}}" style="width:50px;text-align:center;"> <button my-adds items="{{data.items}}" ng-class="{cursors:true}" >+</button> <button my-minus items="{{data.items}}" ng-class="{cursors:true}" >-</button> </td>
     <td ng-cloak>{{data.oneprice}}</td>
     <td ng-cloak>{{data.price}}</td>
    </tr>
   
  </table>
  <div>总价格:{{allPrices()}}</div>
</body>
</html>
<!--<script>alert(0)</script>-->

效果如图所示: 

Angularjs 制作购物车功能实例代码

尊重劳动成果,转载请注明出处(http://blog.csdn.net/sllailcp/article/details/47833315)...

Javascript 相关文章推荐
JavaScript中的一些定位属性[图解]
Jul 14 Javascript
写js时遇到的一些小问题
Dec 06 Javascript
这些年、我收集的JQuery代码小结
Aug 01 Javascript
JavaScript加强之自定义event事件
Sep 21 Javascript
JS图片定时翻滚效果实现方法
Jun 21 Javascript
javascript中活灵活现的Array对象详解
Nov 30 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
JS实现加载时锁定HTML页面元素的方法
Jun 24 Javascript
jquery css实现流程进度条
Mar 26 jQuery
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 Javascript
Openlayers显示地理位置坐标的方法
Sep 28 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
Sep 14 #Javascript
Angular ng-repeat 对象和数组遍历实例
Sep 14 #Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 #Javascript
利用bootstrapValidator验证UEditor
Sep 14 #Javascript
JavaScript鼠标特效大全
Sep 13 #Javascript
javascript表单控件实例讲解
Sep 13 #Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 #Javascript
You might like
用PHP发电子邮件
2006/10/09 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
php 抽象类的简单应用
2011/09/06 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
Python的Django框架使用入门指引
2015/04/15 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
中国梦读书活动总结
2014/07/10 职场文书
网吧消防安全责任书
2014/07/29 职场文书
评先进个人材料
2014/12/29 职场文书
保研推荐信格式
2015/03/25 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
600字作文之感受大自然
2019/11/27 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
Python IO文件管理的具体使用
2022/03/20 Python