angularjs购物车功能(全)包含 (修改,添加等功能)

简介: angularjs购物车功能(全)包含 (修改,添加等功能)

先上效果图:

css代码较为简单 这里的css主要是为了修改模拟窗口,和添加数据模拟窗口:

.shop{
      width: 500px;
      height: 300px;
      background: #E5E5E5;
      margin: 0 auto;
    }
    .shop p{
      width: 450px;
      height: 30px;
      margin: 0 auto;
      margin-top: 20px;
    }
    .shop p input{
      width: 300px;
      height: 30px;
    }

html代码如下

<body ng-app="myApp" ng-controller="myCtrl">
    <button  ng-click="all()">全选</button>
    <button ng-click="fx()">反选</button>
    <button ng-click="qbx()">全不选</button>
    <button ng-click="delAll()">清空购物车</button>
    <button ng-click="dx(price)">价格倒序</button>
    <button ng-click="pidel()">批量删除</button>
    <button ng-click="fanc()">添加商品</button>
    <input type="text" placeholder="查找商品" ng-model="search" />
    <table width="100%" border="3">
      <tr>
        <td></td>
        <td>name</td>
        <td>price</td>
        <td>number</td>
        <td>总价</td>
        <td>删除</td>
      </tr>
      <tr ng-repeat="x in goods|orderBy:order+orderType | filter : {name:search}">
        <td><input ng-model="x.ck" type="checkbox" /> </td>
        <td>{{x.name}}</td>
        <td>{{x.price | currency }}</td>
        <td>
          <button ng-click="jian($index)">-</button>
          <input type="text" value="{{x.number}}" />
          <button ng-click="jia($index)">+</button>
        </td>
        <td>{{x.price * x.number | currency}}</td>
        <td><input ng-click="del($index)" type="button" value="删除" />
          <input ng-click="xiu($index)" type="button" value="修改" />
        </td>
      </tr>
      <tr>
        <td>总价格 :<span ng-bind="allsum() | currency"></span></td>
      </tr>
    </table>
    <!--添加数据相关-->
    <div class="shop" ng-show="add_show">
      <p>商品: <input ng-model="shops" type="text" placeholder="请输入商品名字" /></p>
      <p>价格:<input ng-model="prices" type="number" placeholder="请输入商品价格" /></p>
      <p>数量:<input ng-model="nums" type="number" placeholder="请输入商品数量" /></p>
      <p><button ng-click="trueAdd()">确认添加</button></p>
    </div>
    <!--修改相关-->
    <div class="shop" ng-show="xiu_show">
      <p>商品: <input ng-model="prod.name" type="text" placeholder="请输入商品名字" /></p>
      <p>价格:<input ng-model="prod.price" type="number" placeholder="请输入商品价格" /></p>
      <p>数量:<input ng-model="prod.number" type="number" placeholder="请输入商品数量" /></p>
      <p><button ng-click="save()">保存数据</button></p>
    </div>
  </body>

js代码如下:

var vm=angular.module("myApp" , [])
            vm.controller("myCtrl",function($scope,$http){ 
              $http.get("gouwucar.json").then(function(response){
                $scope.goods=response.data
                // 商品数量的加减
              $scope.jian=function(index){
            if ($scope.goods[index].number>1) {
                $scope.goods[index].number--
            } else {
                $scope.goods[index].number =1
            }
              }
              $scope.jia=function(index){
                $scope.goods[index].number++
              }
              //删除条目
              $scope.del=function(index){
                if (confirm("确定删除")) {
                  $scope.goods.splice(index,1)
                }
              }
              //总价格计算
              $scope.allsum=function(){
                var allPrice=0
                for (var i=0 ; i<$scope.goods.length ; i++) {
                  allPrice+=$scope.goods[i].price * $scope.goods[i].number
                }
                return allPrice;
              }
              //全选
            $scope.all=function(){
              for (i=0 ; i<$scope.goods.length; i++) {
                var x= $scope.goods[i]
              if (x.ck==x.ck) {
                x.ck=true
              }               
              }
            }
        // 反选
            $scope.fx=function(){
              for(i=0 ; i<$scope.goods.length ; i++){
                var x=$scope.goods[i]
                if (x.ck==x.ck) {
                  x.ck = !x.ck
                }
              }
            }
        // 全不选 
          $scope.qbx=function(){
            for (var i=0 ; i<$scope.goods.length ; i++) {
              var x=$scope.goods[i]
              if (x.ck==x.ck) {
                x.ck=false
              }
            }
          }
          //清空购物车
          $scope.delAll=function(){
            if ($scope.goods.length == 0) {
              alert("您的购物车已清空")
            } else{
              $scope.goods=[]
            }
          }
              // 价格倒序
              $scope.order=""
              $scope.dx=function(type){
                $scope.orderType=type
                if ($scope.order=="") {
                  $scope.order="-"
                } else{
                  $scope.order=""
                }
              }
            // 批量删除
            $scope.pidel=function(){
                for (var i= 0 ;i<$scope.goods.length ; i++) {
                    if ($scope.goods[i].ck==true) {
                      $scope.goods.splice(i,1)
                      i--;
                    }
                }
            }
            //添加
            //点击添加按钮弹出添加框
        $scope.fanc=function(){
          $scope.add_show=true
        }
            //点击确认添加按钮
            $scope.trueAdd=function(){
              //获取输入框中的内容
              var shop=$scope.shops
              var prices=$scope.prices
              var num =$scope.nums
              //数据添加
              $scope.goods.push({
                name:shop,
                price:prices,
                number:num
              })
              //清空输入的数据
              $scope.shops=""
              $scope.prices=""
              $scope.nums=""
            }
            //数据修改 
            //定义一个空对象 , 用于更新和保存数据时临时存储
               $scope.prod = {};
            // 定义一个索引值
            var idx=-1
            //定义一个点击按钮时触发的事件,用于单击后弹出模块窗口用于修改数据
            $scope.xiu=function($index){
              //显示窗口
              $scope.xiu_show=true
              //将选中行的数据绑定到临时对象prod中,在下面的模态窗口中展示出来
              $scope.prod.name=$scope.goods[$index].name
              $scope.prod.price=$scope.goods[$index].price
              $scope.prod.number=$scope.goods[$index].number
               //选中行的索引赋值给全局变量idx
               idx=$index
            }
             //定义一个单机保存按钮时触发的事件,
             $scope.save=function(){
               //将修改后的值赋给数组
               $scope.goods[idx].name=$scope.prod.name
               $scope.goods[idx].price=$scope.prod.price
               $scope.goods[idx].number=$scope.prod.number
               //关闭窗口
               $scope.xiu_show=false
             }
            })  
            })

json数据如下

[
     {"name":"小米","price":12,"number":2},
        {"name":"大米","price":23,"number":1},
        {"name":"黑米","price":24,"number":1},
        {"name":"糯米","price":18,"number":5}
  ]
  ```
ok 一个多功能购物车就完成了


相关文章
|
1月前
|
JavaScript
如何使用 ControlValueAccessor 在 Angular 中创建自定义表单控件
如何使用 ControlValueAccessor 在 Angular 中创建自定义表单控件
11 0
|
1月前
|
JavaScript 前端开发
如何在 Angular 中为响应式表单创建自定义验证器
如何在 Angular 中为响应式表单创建自定义验证器
12 0
|
4月前
|
前端开发 JavaScript 开发者
详细介绍 AngularJS 表单的各种特性、用法和最佳实践
详细介绍 AngularJS 表单的各种特性、用法和最佳实践
99 1
|
11月前
|
网络架构
如何处理 Angular 单页面应用里的 a 标签,避免点击后重新加载整个应用
如何处理 Angular 单页面应用里的 a 标签,避免点击后重新加载整个应用
|
JavaScript 前端开发 API
Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
Angular1.4.6框架简单读取数据库信息并渲染完成news新闻文章列表以及detail详情页功能(小试牛刀)
|
JavaScript 前端开发 API
让Angular自定义组件支持form表单验证
让Angular自定义组件支持form表单验证
147 0
|
JavaScript 容器
AngularJS----服务,表单,模块
AngularJS----服务,表单,模块
128 0
AngularJS----服务,表单,模块
|
JavaScript 容器 数据挖掘
Angularjs 与三方js插件配合使用,并通过模板动态解析angularjs 语法
在一个静态见面上做数据分析,由于前后端分离 前端使用Angularjs框架,后端使用RESTFUL,如图
2688 0
|
JavaScript 前端开发