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 hashtable实现代码
Oct 13 Javascript
javascript 打开页面window.location和window.open的区别
Mar 17 Javascript
jQuery UI Autocomplete 体验分享
Feb 14 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
详解JavaScript时间格式化
Dec 23 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
Angular.js指令学习中一些重要属性的用法教程
May 24 Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 Javascript
vue+iview写个弹框的示例代码
Dec 05 Javascript
vue中的计算属性和侦听属性
Nov 06 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
中国的第一台收音机
2021/03/01 无线电
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
相对路径转化成绝对路径
2007/04/10 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
php实现的短网址算法分享
2014/06/20 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
php中的动态调用实例分析
2015/01/07 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
微信支付PHP SDK之微信公众号支付代码详解
2015/12/09 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
php微信公众平台示例代码分析(二)
2016/12/06 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
Python 字典dict使用介绍
2014/11/30 Python
python操作redis方法总结
2018/06/06 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python与字符编码问题
2019/05/24 Python
Python StringIO如何在内存中读写str
2020/01/07 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
授权委托书范本
2014/04/03 职场文书
办理护照工作证明
2014/10/10 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
成本低的5个创业项目:投资小、赚钱快
2019/08/20 职场文书