AngularJS购物车全?取消全选功能的实现方法

  

  

<强> 1,勾选全选复选框,列表数据全部被勾选,取消同理,用ng-model实现双向绑定;

  

<强> 2,选中列表中的所有复选框,全选也会被勾选;强(这里我想到的方法是给每一个对象增加了字段,然后勾选触发echoChange()函数,用了一个cc变量计算当前检查为真正的个数,然后再判断被勾选个数与数组长度是否相等,相等则证明全部被勾选,于是全选按钮也赋值为true;不知道还有没有更简单的方式?有请留言告诉我,谢谢!)

  

<强> 3,全部勾选后,只要取消一个全选的检查状态就为假,

  

<强> 4,实现购物车的小计和总金额计算,仅计算被勾选的商品;

  

  

1,数量我用了类型=笆俊?设置了min=10,但手动输入的值没有做限制,所以如果手动输入会有非法值;

  

2,删除商品功能我只是简单的用了pop()方法,移除最后一个数组元素,实际应该对每一个商品对象实现删除;

  

3,全?取消全选应该还有更严谨的方法,待完善;

  

  

 AngularJS购物车全?取消全选功能的实现方法

  

附上代码:

  

        & lt; !DOCTYPE html>   & lt; html lang=癳n”ng-app=皌estMo”比;   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> & lt;/title>   & lt;链接rel="样式表" href=" https://www.yisu.com/zixun/css/bootstrap.css " rel=巴獠縩ofollow”比;   & lt; style>   .div1 {   保证金:20 px;   }   & lt;/style>   & lt;/head>   & lt; body>   & lt; div ng-controller=皌estCtrl”class=癲iv1”比;   & lt; h5> angularJS——购物车实现全?取消全选& lt;/h5>   & lt;按钮类型=鞍磁ァ崩?癰tn btn-info ng-click”=癮ddProduct()在添加商品& lt;/button>   & lt;按钮类型=鞍磁ァ崩?癰tn btn-danger ng-click”=癲eleteProduct()在删除商品& lt;/button>   & lt; br> & lt; br>   & lt;表类="表table-bordered table-responsive”比;   & lt; thead>   & lt; td>操作& lt;/td>   & lt; td>检查状态& lt;/td>   & lt; td>商品名称& lt;/td>   & lt; td>单价& lt;/td>   & lt; td>数量& lt;/td>   & lt; td>小计& lt;/td>   & lt;/thead>   & lt; tr ng-repeat=肮何锍怠眕比;   & lt; td> & lt;输入类型=案囱】颉眓g-checked=" p。检查“ng-click=" echoChange (p.id, p.checked selectAll)“祝辞& lt;/td>   & lt; td> {{p.checked}} | | {{p.checked}} & lt;/td>   & lt; td> {{p.name}} & lt;/td>   & lt; td>单价:¥{{p.price}} & lt;/td>   & lt; td>数量:& lt;输入类型=笆俊眓g-model=皃。数" min=" 0 " value=" https://www.yisu.com/zixun/p.count "祝辞& lt;/td>   & lt; td>小计:¥{{p.sum}} & lt;/td>   & lt;/tr>   & lt;/table>   & lt; br>   & lt;输入类型=案囱】颉眓g-model=皊electAll ng-click”=皊electAllClick (selectAll)”祝辞& lt;跨度ng-hide=皊electAll”在全选& lt;/span> & lt;跨度ng-show=皊electAll祝辞取消全选& lt;/span>   & lt; br> & lt; br>   已选择& lt; span> {{jishuqi}} & lt;/span>件商品,总金额:& lt; span>¥{{将sumtotals}} & lt;/span>      & lt;/div>   & lt;脚本src=" https://www.yisu.com/zixun/js/angular.js "祝辞& lt;/script>   & lt; script>   angular.module (“testMo”[“ng”])范式(testCtrl,函数(范围){//美元范围。p1=新对象();//scope.p1.price=10美元;//$ scope.p1.count=1;//购物车应该是一个数组   scope.selectAll=false;美元//全选默认为假   $ scope.cart=[{id: 0,名字:“商品0 ',价格:10数:5,总和:10,检查:假});   美元的范围。addProduct=function () {   var p=新对象();   p.id=$ scope.cart.length;   + p.id p.name='商品”   p.price=Math.floor (math . random() * 100);//对数值向下取整   p.count=1;   p。和=p。价格* p.count;   p.checked=false;   scope.cart美元。推动({id: p。id、名称:p.name,价格:p.price数:p。数量,金额:p。和,检查:p.checked});   console.log ($ scope.cart);   }//删除商品   $ scope.deleteProduct=function () {   美元scope.cart.pop();//删除数组中的最后的一个元素,并且返回这个元素,会改变数组里的元素   }//全选按钮检查的点击事件   美元的范围。selectAllClick=函数(sa) {   (var i=0; i< scope.cart.length美元;我+ +){   $ scope.cart[我]支票=sa);   }   }//单个数据的检查事件   $ scope.echoChange=函数(id、ch se) {   $ scope.cart [id]支票=! ch;//当所有都选中时,全选也要被勾选   var cc=0;//计算当前数组中检查为真的数目   (var i=0; i< scope.cart.length美元;我+ +){//如果($ scope.cart[我]支票==true) {//cc + +;//}   $ scope.cart[我].checked& # 63; cc + +: cc;   }   美元scope.selectAll=(cc==scope.cart.length美元);//当为真的数目=数组长度时,证明全部勾?/console.log ($ scope.selectAll);   }//监控数据   范围。看美元(“购物车”,函数(newValue、oldValue、范围){   美元scope.sumTotal=0;//总计   美元scope.jishuqi=0;//计数器   我在newValue (var) {   var sumN=newValue[我]。数* newValue[我].price;//计算出新的结果   美元scope.cart[我]。和=sumN.toFixed (2);//保留两位小数并且把它赋值给元数据;   如果(newValue[我]支票){   美元的范围。将sumtotals +=sumN;   美元scope.jishuqi + +;//console.log ($ scope.sumTotal);//console.log ($ scope.jishuqi);   }   }   },真正的);/*美元看简介:在消化执行时,如果看观察的的价值与上一次执行时不一样时,就会被触发。   AngularJS内部的观察实现了页面随模型的及时更新。   看美元方法在用的时候主要是手动的监听一个对象,但对象发生变化时触发某个事件。   美元的手表(watchFn watchAction deepWatch);   如果不加第三个参数,那么只会监听车数组,只有当车引用改变时才会触发,因此当需要监听一些引用对象时需要把第三个参数设置成正确的。   */});   & lt;/script>   & lt;/body>   & lt;/html>

AngularJS购物车全?取消全选功能的实现方法