如何从函数更新ng-repeat中的字段?

时间:2015-04-05 12:00:55

标签: angularjs

我正在尝试在重复时更新数量时更新小计。小计未获得更新。 以下是我认为的相关代码:

<div ng-repeat="item in ctrl.cartItems">
    <div class="col-sm-6 cartItemLabel" ng-bind="item.label"></div>
    <div class="col-sm-2 inputItem">
        <input class="form-control" type="text" id="item.id" name="item.id" ng-change="updateSub(item)" ng-model="item.qty">
    </div>
    <div class="col-sm-2 inputItem">
        <input class="form-control" type="text" id="item.id" name="item.id" ng-model="item.value">
    </div>
    <div class="col-sm-2 inputItem">
        <input class="form-control" type="text" id="item.id" name="item.id" ng-model="item.subTotal">
    </div>
</div>

而且,从我的控制器:

self.updateSub = function(item) {
    val = item.value;
    qty = item.qty;
    return item.subTotal = val * qty;
};

目前,数据来自控制器内的JSON。我希望稍后将它移到数据库中:

self.cartItems = [
        {id: 1, label: "Band-Aids (box)", value: 1.5, qty: 0, subTotal: 0},
        {id: 2, label: "Binders – 1/2”", value: 6.5, qty: 0, subTotal: 0},
        {id: 3, label: "Binders – 1”", value: 6.5, qty: 0, subTotal: 0},
        {id: 4, label: "Binders – 1 1/2”", value: 7.5, qty: 0, subTotal: 0},
        {id: 5, label: "Binders – 2”", value: 8.5, qty: 0, subTotal: 0}
    ]

2 个答案:

答案 0 :(得分:3)

正如您使用的controllerAs ng-change方法应

ng-change="ctrl.updateSub(item)"应使用控制器的ctrl别名

Working Plunkr

答案 1 :(得分:1)

动态计算每一行的总数,然后评估它会不会更有意义吗?这样,当总数被改变时,绑定它会在用户输入时自动解决...

{{item.qty * item.value}}

动态计算每一行的总数会不会更有意义?并评估它?这样,当总数被改变时,绑定将自动解决它:)你不会解雇额外的事件然后:)