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 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
(function(){})()的用法与优点
Mar 11 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
Jan 16 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
Apr 26 Javascript
jquery 键盘事件的使用方法详解
Sep 13 jQuery
echarts整合多个类似option的方法实例
Jul 10 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
Nov 09 Javascript
js实现抽奖功能
Nov 24 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 str_pad 函数用法简介
2009/07/11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
javascript正则表达式总结
2016/02/29 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python图片的横坐标汉字实例
2019/12/04 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
生产车间主管岗位职责
2013/12/28 职场文书
北京奥运会口号
2014/06/21 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
小学教师求职信范文
2015/03/20 职场文书
单位工作证明范本
2015/06/15 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs