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入门·图片对象(无刷新变换图片)\滚动图像
Oct 01 Javascript
改变javascript函数内部this指针指向的三种方法
Apr 23 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
Apr 14 Javascript
使用js操作cookie的一点小收获分享
Sep 03 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
Nov 03 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
Vue表单输入绑定的示例代码
Nov 01 Javascript
javascript面向对象程序设计实践常用知识点总结
Jul 29 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
原生JS与JQ获取元素的区别详解
Feb 13 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
键盘KeyCode值列表汇总
2013/11/26 Javascript
ExtJs中gridpanel分组后组名排序实例代码
2013/12/02 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
js 性能优化之快速响应的用户界面
2017/02/15 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
python实现的简单文本类游戏实例
2015/04/28 Python
python邮件发送smtplib使用详解
2020/06/16 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Python绘制股票移动均线的实例
2019/08/24 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
2019/08/29 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
《一株紫丁香》教学反思
2014/02/19 职场文书
护士感人事迹
2014/05/01 职场文书
邹越演讲观后感
2015/06/15 职场文书