一、页面搭建
1、html结构
采用BootStrap3来快速创建一个购物车表单样式。
主要功能:
A:列表数据所示
B:增加删除端口
C:清空购物车
D:商品数量的增减
E:动态计算商品价格以及总价
<!DOCTYPE html> <html lang="en" ng-app="app"> <head> <meta charset="UTF-8"> <title>购物车</title> <link rel="stylesheet" href="../vendor/bootstrap/css/bootstrap.css"> <script src="/UploadFiles/2021-04-02/angular.js">2、js逻辑部分
1 注册应用app
2 定义controller以即数据
3 在html中绑定应用以及controller,实现数据渲染
var app=angular.module("app",[]); var carController=function($scope){ $scope.data=[ { id:1, name:'HuaWei', quantity:'2', price:4300 }, { id:2, name:'iphone7', quantity:'3', price:6300 }, { id:3, name:'XiaoMi', quantity:'3', price:2800 }, { id:4, name:'Oppo', quantity:'3', price:2100 }, { id:5, name:'Vivo', quantity:'3', price:2100 } ] }注意:
1、在html中通过ng-app注册应用,ng-controller来绑定控制器作用域,ng-repeat遍历商品数据data
2、在js中,angular提供了angular.forEach(obj,fn(item){})方法来遍历angular的数据,并可以在fn中对数据做进一步处理。此处计算总价便通过此方法
二、业务逻辑
1、总价计算操作
/* * 计算总价 * @method: angular.forEach() * @param: 1. $scope.obj:要遍历的scope上的数据 * 2. function(item){} 回调,在函数内部处理遍历的数据 * */ $scope.totalPrice=function(){ var total=0; angular.forEach($scope.data,function(item){ total+=item.quantity*item.price; }) return total } /*计算总数量*/ $scope.totalQuantity=function(){ var total=0; angular.forEach($scope.data,function(item){ total+=item.quantity; }) return total }说明:
1)、使用angular提供的forEach方法遍历当前数据,从而计算出所有数据的总价以及总数量
2、删除条目
/*移除某项 * @param:传入当前项的id作为参数,以确定移除哪一项 * */ $scope.removeItem=function(id){ var index=findIndex(); $scope.data.splice(index,1); }说明:
1)、为代码利用,所以抽取出来findIndex()方法用于确定当前操作的项,代码如下:
/*查找当前操作的元素的位置*/ function findIndex(id){ var index=-1; angular.forEach($scope.data,function(value,key,obj){ if(value.id===id){ index=key; return index; } }) return index; }3.清空操作
在页面中,直接利用表达式,但data=null完成数据的清空操作
<tr> <td></td> <td>总购买数量 </td> <td>{{totalQuantity()}}</td> <td>总购买价</td> <td>{{totalPrice()}}</td> <td> <button class="btn btn-danger" ng-click="data=null">清空购物车</button> </td> </tr>4. 增加和删除商品数量
/*增加商品数量*/ $scope.add=function(id){ var index=findIndex($scope,id), item=$scope.data[index]; item.quantity++; } /*减少商品数量 * @description: * 减少当前项的数量,当仅剩一件时弹出对话框确认是否清空。是则调用removeItem方法清除当前项 * */ $scope.reduce=function(id){ var index=findIndex($scope,id), item=$scope.data[index]; if(item.quantity>1){ //判断当前项是否还能再减 item.quantity--; }else{ var makesure=confirm('确定要清空当前项吗??'); if(makesure){ $scope.removeItem(id) } } }总结:
此demo主要利用了angular的数据双向绑定特性,从而大大的简化了操作。
关键点:1)、angular.forEach(obj,fn(value,key,obj)) 迭代器
2)、ng-click指令绑定点击事件。使用ng-click会自动触发angular的脏检查机制从而实时的更新视图
3)、ng-repeat指令遍历数据,渲染页面
4)、ng-show指令:通过其值来判断是否显示(原理是给元素加nghide类名)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]