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 处理事件绑定的一些兼容写法
Dec 24 Javascript
jQuery中绑定事件的命名空间详解
Apr 05 Javascript
详解JavaScript中shift()方法的使用
Jun 09 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
基于Vue.js实现数字拼图游戏
Aug 02 Javascript
Vue.js实现文章评论和回复评论功能
May 30 Javascript
深入理解ES7的async/await的用法
Sep 09 Javascript
深入理解node.js http模块
Jan 24 Javascript
详解Vue中的Props与Data细微差别
Mar 02 Javascript
javascript实现图片轮换动作方法
Aug 07 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
FCKeditor添加自定义按钮
2008/03/27 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
PHP 编程安全性小结
2010/01/08 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
PHP运行模式汇总
2016/11/06 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
详解Python if-elif-else知识点
2018/06/11 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
实习护士自我鉴定
2013/10/13 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
个人作风剖析材料
2014/02/02 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
项目备案申请报告
2015/05/15 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android
Python四款GUI图形界面库介绍
2022/06/05 Python