我最近开始学习一些 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/