angular.js实现购物车功能


Posted in Javascript onOctober 23, 2017

本文实例为大家分享了angular.js购物车功能的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>购物车</title>
  <script src="angularjs/angular.js"></script>
  <style>
    .box{
      width: 100%;
      border-bottom: 1px solid silver;
    }
    .box1{
      width: 100%;
      margin-top: 5px;
    }
    .box1 button{
      width: 100px;
      height: 40px;
      background: crimson;
      color: white;
      text-align: center;
      line-height: 40px;
      float: right;
      border: 0;
      border-radius: 13px;
    }
    table{
      width: 100%;
    }
    tr td button{
      background: blue;
      color: white;
      border: 0;
    }

  </style>
  <script>
    var my=angular.module("my",[]);
    my.controller("mys",function ($scope) {
      /*声明数据对象,初始化商品信息,数据自拟且不低于四条*/
      $scope.arr=[
        {name:"qq",price:12.9,number:2,state:false},
        {name:"wx",price:23.9,number:1,state:false},
        {name:"aa",price:99.9,number:1,state:false},
        {name:"bb",price:10.9,number:5,state:false}
      ];
      /*删除条目*/
      $scope.del=function (index) {
        if(confirm("确定移除此项嘛?")){
          $scope.arr.splice(index,1);
        }
      }
      /*点击”+”按钮输入框中的数量加1,同时可以计算出商品小计,和购物 车总价*/
      $scope.jia=function (index) {
        $scope.arr[index].number++;
      }
      /*当点击”-”按钮时输入框中的数量减1,商品小计和总价*/
      $scope.jian=function (index) {
        if($scope.arr[index].number>1){
          $scope.arr[index].number--;
        }
        else if($scope.arr[index].number==1){
          if(confirm("用户是否删除该商品")){
            $scope.arr.splice(index,1);
          }
        }
      }
      /*计算总价格*/
      $scope.allSum=function () {
        var allPrice=0;
        for(var i=0;i<$scope.arr.length;i++){
          allPrice+=$scope.arr[i].price*$scope.arr[i].number;
        }
        return allPrice;
      };
      /*清空购物车*/
      $scope.alldel=function () {
        if($scope.arr.length==0){
          alert("您的购物车已空");
        }else{
          $scope.arr=[];
        }
      }
      /*用户点击第一个checkbox代表全选,全选商品后点击删除选中商品,选中商品被删除,  若购物车商品被全部删除后*/
      $scope.allCheck=false;
      $scope.allx= function () {
        for(var i=0;i<$scope.arr.length;i++){
          if($scope.allCheck==true){
            $scope.arr[i].state=true;
          }else {
            $scope.arr[i].state=false;
          }
        }
      };
      /*每个复选框*/
      $scope.itemCheck = function () {
        var flag = 0;
        for(var i = 0; i<$scope.arr.length; i++){
          if($scope.arr[i].state == true){
            flag ++;
          }
        }
        if(flag == $scope.arr.length){
          $scope.allCheck = true;
        }else{
          $scope.allCheck = false;
        }
      };
      /*批量删除*/
      $scope.pi=function () {
        for(var i=0;i<$scope.arr.length;i++){
          if($scope.arr[i].state==true){
            $scope.arr.splice(i,1);
            i--;
            $scope.allCheck = false;
          }
        }
      }
    });
  </script>
</head>
<body ng-app="my" ng-controller="mys">
  <div class="box">
    <h2>我的购物车</h2>
  </div>
  <div class="box1">
    <button ng-click="alldel()" style="margin-right: 10px">清空购物车</button><button ng-click="pi()" style="margin-left: 5px">批量删除</button>
  </div>
  <div class="box2">
    <table border="1">
      <tr>
        <th><input type="checkbox" ng-model="allCheck" ng-click="allx()"/></th>
        <th>name</th>
        <th>price</th>
        <th>number</th>
        <th>totalPrice</th>
        <th>option</th>
      </tr>
      <!--用ng-repaet指令将对象遍历并渲染到页面中-->
      <tr ng-repeat="item in arr">
        <td><input type="checkbox" ng-model="item.state" ng-click="itemCheck()"/></td>
        <td>{{item.name}}</td>
        <td>{{item.price | currency:"¥:"}}</td>
        <td><button ng-click="jian($index)">-</button>
          <input type="text" value="{{item.number}}" style="width: 30px;padding-left: 20px"/>
          <button ng-click="jia($index)">+</button>
        </td>
        <td>{{item.price*item.number | currency:"¥:"}}</td>
        <td><button ng-click="del($index)">删除</button></td>
      </tr>
      <tr>
        <td colspan="6">总金额<span ng-bind="allSum()|currency:'¥:'"></span></td>
      </tr>
    </table>
  </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
Jquery对数组的操作技巧整理
Mar 25 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
Sep 10 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
Dec 26 Javascript
数组Array的排序sort方法
Feb 17 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
Jul 20 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
Jan 12 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 Javascript
详解vue引入子组件方法
Feb 12 Javascript
js正则匹配多个全部数据问题
Dec 20 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
使用store来优化React组件的方法
Oct 23 #Javascript
node文件批量重命名的方法示例
Oct 23 #Javascript
详解vue 实例方法和数据
Oct 23 #Javascript
深入浅析javascript继承体系
Oct 23 #Javascript
Vue.js组件通信的几种姿势
Oct 23 #Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 #Javascript
JavaScript之创意时钟项目(实例讲解)
Oct 23 #Javascript
You might like
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
PHP 数组实例说明
2008/08/18 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
Django中对数据查询结果进行排序的方法
2015/07/17 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
python字符串的方法与操作大全
2018/01/30 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python 代码调试技巧示例代码
2020/08/11 Python
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
计算s=f(f(-1.4))的值
2014/05/06 面试题
法律专业应届生自荐信范文
2014/01/06 职场文书
求职教师自荐书
2014/06/19 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
js Proxy的原理详解
2021/05/25 Javascript
Python利用capstone实现反汇编
2022/04/06 Python