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之解决IE下不渲染的bug
Jun 29 Javascript
JQUERY CHECKBOX全选,取消全选,反选方法三
Aug 30 Javascript
js css 实现遮罩层覆盖其他页面元素附图
Sep 22 Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
angular.js分页代码的实例
Jul 27 Javascript
利用JS实现页面删除并重新排序功能
Dec 09 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
Feb 14 Javascript
最常用的jQuery表单验证(简单)
May 23 jQuery
详解Webpack DLL用法以及功能
Jul 11 Javascript
VUE 3D轮播图封装实现方法
Jul 03 Javascript
node-red File读取好保存实例讲解
Sep 11 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
2011/09/28 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
定制FileField中的上传文件名称实例
2017/08/23 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
市场营销专业毕业生求职信
2014/03/26 职场文书
学前班评语大全
2014/05/04 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
快递员岗位职责
2014/09/12 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
三八节祝酒词
2015/08/11 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
Python访问Redis的详细操作
2021/06/26 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python