我一直在想是否有人解决了我的问题。我的代码看起来像这样。
var app = angular.module('myApp', []);
app.controller('myCtrl',function($scope){
//Adding New Check# and Check amount Text Boxes
$scope.checks = [{checkNum1: '',checkAmt1:''}];
$scope.add = function() {
var newCheckNo = $scope.checks.length+1;
$scope.checks.push({['checkAmt'+newCheckNo]:''});
};
$scope.tot = function() {
return $scope.checks;
};
$scope.total = function() {
var value = "";
for(var i =0 ; i<=$scope.checks.length;i++ ){
value += $scope.checks.get('checkAmt1');
}
return value;
};
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div class="col-md-12">
<div class="col-md-6">
<div ng-repeat="check in checks">
<div class="form-group">
<label>check Amount:</label>
<div class="col-md-5">
<input type="text" class="form-control" id="{{'id'+($index+1)}}" ng-model="check['checkAmt'+($index+1)]" maxlength="6" />
</div>
</div>
</div>
<button type="button"
ng-click="add()">Add More</button>
</div>
</div>
<div class="col-md-6">
<!--<p ng-repeat="check in checks">{{check['checkAmt'+($index+1)]}}</p>-->
</div>
<label>{{tot()}}</label>
<label>{{total()}}</label>
</div>
&#13;
我正在初始化$scope.checks = [{checkAmt1:''}];
并在点击添加按钮(checkAmt2
,checkAmt3
,...等等)时推送其他值。我想使用checkAmt1+checkAmt2+
动态添加这些值({{total()}}
...等)。 total()
函数正在调用,我知道for循环中的逻辑是错误的。请帮助我修复逻辑(或)建议我,如果有任何其他方式来添加这些值。
提前致谢。
注意:请在整页视图中查看结果。
答案 0 :(得分:1)
首先,它不是使用数组的正确方法。 您可以总结具有相同名称而不是动态名称的列。
我认为以这种方式使您使用的条目与众不同。但这不是好方法,会使你在阵列上的操作变得复杂。
您可以尝试以下列方式构建数组,
In [20]: from itertools import chain
In [21]: list(chain.from_iterable(cls.my_attr for cls in MyClass.__bases__))
Out[21]: ['baz', 'foo', 'bar']
完整更改的代码看起来像
$scope.checks = [{id:'',checkNum: '',checkAmt:''}];
&#13;
var app = angular.module('myApp', []);
app.controller('myCtrl',function($scope){
//Adding New Check# and Check amount Text Boxes
$scope.checks = [{id:'', checkAmt:''}];
$scope.add = function() {
var newCheckNo = $scope.checks.length+1;
$scope.checks.push({'id':newCheckNo ,'checkAmt':''});
};
$scope.tot = function() {
return $scope.checks;
};
$scope.total = function() {
var value = 0;
for(var i =0 ; i<$scope.checks.length;i++ ){
value += parseInt( $scope.checks[i].checkAmt);
}
return value;
};
});
&#13;
答案 1 :(得分:0)
我不确定为什么你确实将这些对象推入数组,而不仅仅是数字,但是当你迭代它时 - 你可以通过索引访问每个值,然后获取正确的对象&#39; s值:
for(var i =0 ; i<=$scope.checks.length;i++ ){
value += $scope.checks[i]['checkAmt' + i];
}