javascript - AngularJS 和效率(或 : storing values for multiple uses)

标签 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 的值...

谢谢

最佳答案

使用 $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();
    });

关于javascript - AngularJS 和效率(或 : storing values for multiple uses),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29047085/

相关文章:

javascript - AngularJS - 提交按钮未禁用(我是新手)

javascript - AngularJS - 将错误从服务传递到 Controller

javascript - AngularJS - 将数组值绑定(bind)到输入 ngModel

javascript - 如何在 jQuery 中解析 JSON 响应?

javascript - 通过 http createServer 提供图像

javascript - 有没有更好的方法在没有输入框的情况下进行输入后进行页面重定向?

c - 循环交换与循环平铺

java - 三元表达式比 boolean 逻辑快吗?

c++ - 逐行改进 C++ 的读取文件?

javascript - React.js .push() 不是函数