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 防止表单重复提交代码
Jan 21 Javascript
JavaScript/jQuery 表单美化插件小结
Feb 14 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
jquery事件preventDefault()方法用法实例
Jan 16 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
Mar 24 Javascript
使用JavaScript刷新网页的方法
Jun 04 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
JavaScript实现分页效果
Mar 28 Javascript
一个可复用的vue分页组件
May 15 Javascript
Openlayers实现地图全屏显示
Sep 28 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
php设计模式 Visitor 访问者模式
2011/06/28 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
PHP 类与构造函数解析
2017/02/06 PHP
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
js导出txt示例代码
2014/01/14 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
python对数组进行反转的方法
2015/05/20 Python
Python利用IPython提高开发效率
2016/08/10 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
Python线程创建和终止实例代码
2018/01/20 Python
对python函数签名的方法详解
2019/01/22 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
python可视化实现KNN算法
2019/10/16 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
土建资料员岗位职责
2014/01/04 职场文书
《雪儿》教学反思
2014/04/17 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
Pandas自定义选项option设置
2021/07/25 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js