AngularJS和效率(或:存储多个用途的值)

时间:2015-03-14 08:40:32

标签: javascript angularjs performance

我最近开始学习一点AngularJS(几乎没有编程经验)。我想创建一个统计分析工具,为此我做了一些“概念验证”的例子。

喜欢这个:http://jsfiddle.net/nitecorp/udcjnoxo/

它有效,但我觉得我使用这些功能的方式非常低效:

<tr>
    <td>Average Age</td>
    <td>{{getAverage()}}</td>
</tr>
<tr>
    <td>Younger</td>
    <td>{{getStats(getAges())['younger']}}</td>
</tr>
<tr>
    <td>Older</td>
    <td>{{getStats(getAges())['older']}}</td>
</tr>

问题 存储getAges并使用结果而不是每次重新计算的正确方法是什么?对于getStats也是如此:我可以只存储值而不是重新计算两次(在示例中)?

注意:在这个示例中并不是什么大问题,但是我需要将该代码应用于更复杂的场景,具有更复杂的统计数据(标准偏差,方差等)并使用超过1M的值...

由于

1 个答案:

答案 0 :(得分:1)

使用 $ watch 监听数据结构的更新,然后相应地更新变量。

我已经创建了fork of your fiddle来说明这一点,下面的代码展示了重要的内容:

$scope.$watch(
    function(scope) {
        return $scope.dogs.length;
    },
    function(oldVal, newVal) {
        console.log('dogs changed');
        $scope.updateStats($scope.getAges());
        $scope.updateAverage();
    });