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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 Javascript
js查看一个函数的执行时间实例代码
Sep 12 Javascript
JS中多种方式创建对象详解
Mar 22 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
利用NPM淘宝的node.js镜像加速nvm
Mar 27 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
vue和webpack项目构建过程常用的npm命令详解
Jun 15 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 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 foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
python修改注册表终止360进程实例
2014/10/13 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
python实现动态创建类的方法分析
2019/06/25 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
python计算auc的方法
2020/09/09 Python
ASP.NET Core中的配置详解
2021/02/05 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
团员个人总结
2015/02/26 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书