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 相关文章推荐
jQuery 使用手册(一)
Sep 23 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
JavaScript之Canvas_动力节点Java学院整理
Jul 04 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
May 23 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
Oct 29 Javascript
微信小程序实现自定义底部导航
Nov 18 Javascript
Vue实现简单购物车功能
Dec 13 Vue.js
一步一步封装自己的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图片上传程序
2008/03/27 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
php 基础函数
2017/02/10 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
JSON取值前判断
2014/12/23 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
Bootstrap模态框水平垂直居中与增加拖拽功能
2016/11/09 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
家长写给孩子的评语
2014/04/18 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
实习护士自荐信
2014/06/21 职场文书
电力培训心得体会
2014/09/02 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
MySQL 存储过程的优缺点分析
2021/05/20 MySQL