我正在尝试创建一个函数来汇总来自工厂的一些数字(以及来自客户端的一些实时),并将总和放在视图中。完全卡住了。
1 - 首先,我不明白如何在视图中显示在控制器函数中组装的变量。
所以让我说我有类似的东西:
$scope.total = function() {
var totalNumber = 0;
}
如何在视图中显示totalNumber?
我假设在得到这个之后,为了总结我的工厂数据:
var revenues = [
{ amount: 1254 },
{ amount: 1654 },
{ amount: 33 },
{ amount: 543 }
];
我必须做类似的事情:
$scope.total = function() {
var totalNumber = 0;
for(i=0; i<revenues.length; i++){
totalNumber = totalNumber + revenues[i].amount
}
}
这是对的吗?如果我动态更改收入数组,它会实时更新吗?
答案 0 :(得分:8)
正如所承诺的,这是一种不同的方法。一个监视revenues
集合并在每次更改时更新值的人:
<div ng-app ng-controller="SumCtrl">
Total: {{total}}
<input type="text" ng-model="newAmount" />
<button ng-click="add(newAmount)">Add</button>
</div>
JavaScript:
function SumCtrl($scope) {
function total() {
var totalNumber = 0;
for(var i=0; i<$scope.revenues.length; i++){
totalNumber = totalNumber + $scope.revenues[i].amount
}
return totalNumber;
}
$scope.revenues = [
{ amount: 1254 },
{ amount: 1654 },
{ amount: 33 },
{ amount: 543 }
];
$scope.add = function(value) {
$scope.revenues.push({ amount: parseInt(value) });
}
$scope.$watchCollection("revenues", function() {
$scope.total = total();
});
}
答案 1 :(得分:0)
有几种方法可以解决这个问题。如果你想要一个total()
函数,它会是这样的:
<div ng-app ng-controller="SumCtrl">
Total: {{total()}}
<input type="text" ng-model="newAmount" />
<button ng-click="add(newAmount)">Add</button>
</div>
以下是代码:
function SumCtrl($scope) {
$scope.revenues = [
{ amount: 1254 },
{ amount: 1654 },
{ amount: 33 },
{ amount: 543 }
];
$scope.total = function() {
var totalNumber = 0;
for(var i=0; i<$scope.revenues.length; i++){
totalNumber = totalNumber + $scope.revenues[i].amount
}
return totalNumber;
}
$scope.add = function(value) {
$scope.revenues.push({ amount: parseInt(value) });
}
}
只要范围发生变化(很多),total()
函数就会重新评估。更好的方法是观察revenues
的更改并更新静态值...我也会发布该答案。
答案 2 :(得分:0)