Angular实现购物车计算示例代码


Posted in Javascript onFebruary 21, 2017

使用AngularJS实现一个简单的购物车,主要感受强大的双向绑定和只关注对象不关注界面特性。

先看看界面:

Angular实现购物车计算示例代码

点击+-操作和删除:

Angular实现购物车计算示例代码

这些全部只需要操作数据源就行,不需要关注界面。

实现过程:

一、使用任何语言创建一个服务端:

public class ShoppingCar
  {
    public string Title { get; set; }
    public decimal UnitPrice { get; set; }
    public int Count { get; set; }
  }
public ActionResult GetCar()
    {
      List<ShoppingCar> cars = new List<ShoppingCar>
      {
        new ShoppingCar { Title="苹果",Count=1,UnitPrice=2.5m},
        new ShoppingCar { Title="香蕉",Count=3,UnitPrice=1.5m},
        new ShoppingCar { Title="苦瓜",Count=1,UnitPrice=3.5m},
        new ShoppingCar { Title="黄瓜",Count=3,UnitPrice=2.2m}
      };
      return Json(cars,JsonRequestBehavior.AllowGet);
    }

    public ActionResult AddCar(List<ShoppingCar> car)
    {
      return Json("ok", JsonRequestBehavior.AllowGet);
    }

二、前台实现:

<div ng-app="DemoApp" ng-controller='CartController'>
    <table class="table table-striped">
      <thead>
        <tr>
          <td>标题</td>
          <td>单价</td>
          <td>数量</td>
          <td>小计</td>
          <td>删除</td>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="item in ShoppingCar">
          <td>{{item.Title}}</td>
          <td>{{item.UnitPrice}}</td>
          <td>
            <input type="text" ng-cloak ng-model="item.Count" style="width:50px;text-align:center;">
            <button my-adds ng-click="UpdateCar(item.Title,1)" ng-class="{cursors:true}">+</button>
            <button my-minus ng-click="UpdateCar(item.Title,-1)" ng-class="{cursors:true}">-</button>
          </td>
          <td>{{item.Count*item.UnitPrice | number:2}}</td>
          <td><button my-minus ng-click="UpdateCar(item.Title,-100)" ng-class="{cursors:true}">删</button></td>
        </tr>
      </tbody>
    </table>
    <p ng-init=0>总价格:{{ total | number:2}}</p>
    <button type="button" ng-click="submit()">提交</button>
  </div>

三、Angular部分
 

var app = angular.module('DemoApp', []);

  app.controller('CartController', ['$scope', '$http', function ($scope, $http) {
    $scope.ShoppingCar = {}
    var GetCar = function () {
      $http.get('/Employee/GetCar')
      .success(function (response) {
        $scope.ShoppingCar = response;
        GetTotal();
      });
    }
    $scope.total = 0;
    var GetTotal = function () {
      for (var i = 0; i < $scope.ShoppingCar.length; i++) {
        var item = $scope.ShoppingCar[i];
        $scope.total += item.Count * item.UnitPrice;
      }
    }

    $scope.UpdateCar = function (title, count) {
      for (var i = 0; i < $scope.ShoppingCar.length; i++) {
        var item = $scope.ShoppingCar[i];
        if (item.Title == title) {
          item.Count = item.Count + count;//这里可以增加上下限制
          if (item.Count < 0) {
            $scope.ShoppingCar.splice(i, 1);
          }
        }
      }
      GetTotal();
    }
    $scope.submit = function () {
      $http.post('/Employee/AddCar', $scope.ShoppingCar)
          .success(function (response) {
          alert(response);
      });
    }
    GetCar();
  }]);

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

Javascript 相关文章推荐
javascript之学会吝啬 精简代码
Apr 25 Javascript
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
基于Jquery的跨域传输数据(JSONP)
Mar 10 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
Aug 08 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
js+css实现导航效果实例
Feb 10 Javascript
JavaScript性能优化之小知识总结
Nov 20 Javascript
浅谈javascript基础之客户端事件驱动
Jun 10 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
Feb 08 Javascript
使用express获取微信小程序二维码小记
May 21 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
Promise静态四兄弟实现示例详解
Jul 07 Javascript
原生js实现倒计时--2018
Feb 21 #Javascript
vue-router:嵌套路由的使用方法
Feb 21 #Javascript
JavaScript中创建对象的7种模式详解
Feb 21 #Javascript
vue-router路由简单案例介绍
Feb 21 #Javascript
微信小程序 基础组件与导航组件详细介绍
Feb 21 #Javascript
微信小程序 UI与容器组件总结
Feb 21 #Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 #Javascript
You might like
php 接口类与抽象类的实际作用
2009/11/26 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
配置eAccelerator和XCache扩展来加速PHP程序的执行
2015/12/22 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
javascript dom 基本操作小结
2010/04/11 Javascript
js实现日期级联效果
2014/01/23 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
vue实现分页栏效果
2019/06/28 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
python编写微信公众号首图思路详解
2019/12/13 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
工作失职检讨书范文
2014/01/16 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
2014年电教工作总结
2014/12/19 职场文书
电视新闻稿
2015/07/17 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
Python实现信息管理系统
2022/06/05 Python