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 相关文章推荐
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
Sep 23 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
微信小程序实现图片预览功能
Jan 31 Javascript
JavaScript实现页面中录音功能的方法
Jun 04 Javascript
JAVA面试题 static关键字详解
Jul 16 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
Feb 07 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 Javascript
JS出现404错误原理及解决方案
Jul 01 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
网络资源
2006/10/09 PHP
php开发文档 会员收费1期
2012/08/14 PHP
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
浅谈关于iview表单验证的问题
2018/09/29 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
自荐信怎么写呢?
2013/12/09 职场文书
集体婚礼证婚词
2014/01/13 职场文书
家长会欢迎标语
2014/06/24 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年底工作总结
2014/12/15 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
Golang获取List列表元素的四种方式
2022/04/20 Golang