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中void(0)的具体含义解释
Feb 27 Javascript
提高网站信任度的技巧
Oct 17 Javascript
JavaScript DOM学习第一章 W3C DOM简介
Feb 19 Javascript
jQuery模拟点击A标记示例参考
Apr 17 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 Javascript
详解JS: reduce方法实现 webpack多文件入口
Feb 14 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
解析Vue.js中的组件
Feb 02 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 Javascript
Javascript异步流程控制之串行执行详解
Sep 27 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 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
PHP对象链式操作实现原理分析
2016/10/09 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
浅谈js的异步执行
2016/10/18 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python中的二维列表实例详解
2018/06/19 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
浅析python redis的连接及相关操作
2019/11/07 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
接受捐赠答谢词
2014/01/27 职场文书
初一学生期末评语
2014/04/24 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
二年级作文之动物作文
2019/11/13 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers