Предположим, у меня есть следующее:
<body data-ng-init="getTotal()">
<input type="number" ng-change="getTotal()" ng-model="factor.inputs[0]"
ng-value="30"/>
<input type="number" ng-change="getTotal()" ng-model="factor.inputs[1]"
ng-value="20" />
<input type="number" ng-change="getTotal()" ng-model="factor.inputs[2]"
ng-value="60" />
{{total}}
<input type="submit" ng-disabled="disabledSave" value="Save" />
appcontroller.js
$scope.factor = { inputs: [] };
$scope.getTotal = function() {
$scope.disabledSave = false;
var total = 0;
for(var i = 0; i < $scope.factor.inputs.length; i++){
var numero = $scope.factor.inputs[i] || 0;
total = total + numero;
}
if (total > 100) {
$scope.disabledSave = true;
}
};
Я попадаю в функцию, но не получаю сумму, которая в данном случае равна 110, я думаю Проблема в: $scope.factor = { inputs: [] };
Сначала, если ты занимаешь Angularjs
, примени это. Если у тебя может быть "n" inputs лучшее, что ты можешь делать, он состоит в том, чтобы определять количество неудара в лунку в драйвере.
В этом случае объявил $scope.fields
, который содержит так называемую договоренность inputs
, как первая эта инстанция опустошила. Потом я объявляю функцию $scope.addInput
, что то, что он делает, состоит в том, чтобы добавлять ''
и потому что? В виде у меня есть один ng-repeat
из моей договоренности fields
, но внутри одного input
следовательно добавлять inputs постоянно. В конце концов я добавляю событие ng-change
к функции getTotal
, что я пробежал мою договоренность fields
, и он получает вошедшую стоимость. Если стоимость суммы превосходящая 100, как ты сказал, кнопка Save
остается disabled.
$scope.fields = { inputs: [] };
$scope.addInput = function() {
$scope.fields.inputs.push('');
}
$scope.ver_boton = true;
$scope.getTotal = function(){
$scope.total = 0;
for(var i = 0; i < $scope.fields.inputs.length; i++){
var numero = Number($scope.fields.inputs[i] || 0);
$scope.total = $scope.total + numero;
}
if($scope.total > 100){
$scope.ver_boton = false;
}else{
$scope.ver_boton = true;
}
}
<input ng-repeat="input in fields.inputs track by $index" type='number' ng-model='fields.inputs[$index]' placeholder='Ingrese numero' ng-change="getTotal();">
<button ng-click="addInput()">Add input</button>
<button ng-click="" ng-disabled="!ver_boton">Save</button>
Codepen, чтобы видеть пример функционируя
РЕДАКТИРОВАНИЕ
, Так как ты применил большую часть моего кода, но, как ты говоришь "у меня не выходит общее количество", он, потому что общего количества нет $scope.total
, если не var total
, меняет total
в $scope.total
Для того, чтобы он присоединился и видел в первой инстанции, добавляет к твоему виду Total: {{total || 0}}
$scope.factor = { inputs: [] };
$scope.getTotal = function() {
$scope.disabledSave = false;
$scope.total = 0;
for (var i = 0; i < $scope.factor.inputs.length; i++) {
var numero = $scope.factor.inputs[i] || 0;
$scope.total = $scope.total + numero;
}
if ($scope.total > 100) {
$scope.disabledSave = true;
}
};
РЕДАКТИРОВАНИЕ 2
, Как твоя другая проблема состоит в том, чтобы инициализировать неудар в лунку с одним ng-model
ты не был бы должен занимать ng-value
в пользу никакого мотива.
$scope.fields = { inputs: [] };
$scope.fields.inputs[0] = 30;
$scope.fields.inputs[1] = 80;
, Чтобы видеть немедленно результат однажды нагруженная вид, под твоей функцией getTotal();
ты должен называть ее.
$scope.ver_boton = true;
$scope.getTotal = function(){
$scope.total = 0;
for(var i = 0; i < $scope.fields.inputs.length; i++){
var numero = Number($scope.fields.inputs[i] || 0);
$scope.total = $scope.total + numero;
}
if($scope.total > 100){
$scope.ver_boton = false;
}else{
$scope.ver_boton = true;
}
}
$scope.getTotal();