用angularjs在循环遍历中绑定ng-model

angularjs的双向绑定非常的好用,当修改了一个地方的值后另外一个地方也同步修改了,如果用平时的js来写的话需要写很多代码,但是用了angularjs后只需要几行代码就能轻松搞定。

想做一个类似于淘宝的改价的功能,就是当用户拍下了宝贝后卖家给你调价的那个功能,界面就像这样:

\

当修改了折扣或者直接填写了优惠价格的时候折扣和优惠价格就会去计算,先看看html的代码:< 喎 �"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">html> <script src="js/angular.min.js"></script> <script src="js/chen.js"></script>

商品 单价 数量 总价 优惠
{{a.name}} {{a.price}} {{a.count}} {{a.count*a.price}} 折 =
买家应付: {{itemSum}}-{{preferential}}={{sum}}
支付说明: 总价-优惠=实际支付

绑定在标签上面的"a.discount"和“a.p”在controller里面的数组中并没有这两个数据,但是这么绑定了后如果你在里面填写了值就自动会在数组中创建出来


然后是angularjs的控制层:

var app = angular.module('app', []);
app.controller('formController', function($scope) {
            $scope.array = [{
                        name : '小米',
                        price : '20',
                        count : '2'
                    }, {
                        name : '三星',
                        price : '50',
                        count : '1'
                    }]; // 表格数据
            $scope.itemSum = 0; // 表格里面的总价
            $scope.preferential = 0; // 表单的优惠
            $scope.sum = 0; // 实际总价
 
            for (var i = 0; i < $scope.array.length; i++) {
                // 计算表单的总价
                var node = $scope.array[i];
                $scope.itemSum += (node.count * node.price);
            }
 
            $scope.chanage = function(t) {
                // 修改折扣后触发事件
                var node = t.a
                node.p = node.discount / 10 * node.count * node.price;// 计算折扣对应的金额
            }
 
            $scope.chanage2 = function(t) {
                // 修改优惠价格后对应的change事件
                var node = t.a
                var total = node.price * node.count;
                node.discount = (total - node.p) / total * 10;// 修改优惠价格后对应的折扣
            }
 
            $scope.$watch('array', aa, true);// 监听显示表格的数据,如果修改了就调用aa的方法
 
            function aa() {
                // 该方法主要是在修改了折扣或优惠后计算出新的应付的价格
                $scope.preferential = 0;
                for (var i = 0; i < $scope.array.length; i++) {
                    var p = $scope.array[i].p;
                    if (p != null) {
                        $scope.preferential += ($scope.array[i].p - 0);
                    }
                }
                $scope.sum = $scope.itemSum - $scope.preferential;
            }
        })



最后的效果:

当修改了折扣或优惠的金额后其他的地方就会同步的计算出来;

转载于:https://my.oschina.net/mickelfeng/blog/353990

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值