Angularjs:用户输入后更新过滤器

时间:2016-03-08 22:19:43

标签: javascript angularjs

我在使用angularjs进行用户输入后更新值时遇到问题。我给用户一个网格来输入数字,在每次按键后,我想将该列加总并显示在列标题中。过滤器适用于表的初始值,但在将新数字输入表时不会更新。有没有办法刷新元素?

<th>total<small>{{Rows|sumByKey:'ColOne'}}</small></th> ....

<tr ng-repeat="Row in Rows">
    <td><input type="text" value="{{Row.ColOne}}"/></td>
</tr>

Angularjs过滤器:

app.filter('sumByKey', function () {
return function (data, key) {
    if (typeof (data) === 'undefined' || typeof (key) === 'undefined') {
        return 0;
    }

    var sum = 0;
    for (var i = data.length - 1; i >= 0; i--) {
        sum += parseInt(data[i][key]);
    }
    //filter.$stateful = true;
    return sum;
    };
});

1 个答案:

答案 0 :(得分:1)

我相信你需要绑定你的价值以使角度意识到变化。 在输入上使用ng-model来设置值。通过这种方式,Angular可以控制所有值。

<th>total<small>{{Rows|sumByKey:'ColOne'}}</small></th> ....

<tr ng-repeat="Row in Rows">
    <td><input type="text" ng-model="Row.ColOne"/></td>
</tr>

这是plunker for it running