我最近开始学习一点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的值...
由于
答案 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();
});