Добавить входной текст в AngularJS (Angular 1)

Предположим, у меня есть следующее:

<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: [] };

0
задан 29.08.2019, 04:41
1 ответ

Сначала, если ты занимаешь 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();
2
ответ дан 24.11.2019, 12:40
  • 1
    Вот точно тем, что он хотел, но он служил мне гидом. Thanks –  sirdaiz 11.11.2016, 17:41
  • 2
    что ты хотел точно тогда? Он не состоял в том, чтобы получать сумму и способствовать тому, чтобы была блокирована кнопка? @Jose –  sioesi 11.11.2016, 17:45
  • 3
    в принципе это у меня есть, но представь себе то, что у меня есть точно уже это в виде: –  sirdaiz 11.11.2016, 18:09
  • 4
    @Jose ты можешь объяснять тогда, который является ошибкой в твоем коде? –  sioesi 11.11.2016, 18:22
  • 5
    я изменил главный вопрос, чувствую, но не очень хорошо, как funcioan это overflow, я новый –  sirdaiz 11.11.2016, 18:24