Отображение суммы двух чисел в текстовых полях в третьем текстовом поле с помощью AngularJS Controller - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь найти сумму двух чисел, введенных в текстовые поля, и отобразить результат в третьем текстовом поле, используя контроллер в AngularJS.Но я не получаю ответ.Вот код, который я попробовал:

<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <h1> ANGULAR JS</h1>
  <script src="https://code.angularjs.org/1.6.9/angular.js"></script>
  <script src="E:\akansha\angular-1.7.6\angular.js"></script>
  <script src="E:\akansha\angular-1.7.6\angular.min.js"></script>
  <div ng-app="sumApp" ng-controller="sumCtrl">
    Enter first number<input type="number" ng-model="num1"><br> Enter second number<input type="number" ng-model="num2"><br> Sum
    <input type="text" ng-model="sum"> {{num1+" "+num2}}
  </div>
  <script>
    var app = angular.module('sumApp', []);
    app.controller('sumCtrl', function($scope) {
      var a = $scope.num1;
      var b = $scope.num2;
      var c = a + b;
      $scope.sum = c;
    });
  </script>
</body>

</html>

Пожалуйста, скажите мне, где я не прав.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Это очень простое решение Аканша.Все, что вам нужно сделать здесь, это сделать несколько изменений следующим образом:

  • Прежде всего,

    Sum<input type="text" ng-model="sum">
       {{num1+" "+num2}}
    

    Это неправильно, если вы пытаетесьчтобы найти сумму ... потому что то, что вы на самом деле делаете, это просто добавление (присоединение второго числа к первому с пробелом между ними). ​​

Таким образом, вы можете сделать ЛЮБОЙОДНА из следующих 3 вещей:

  1. Замените вышеуказанный код на: Sum<input type="text" ng-model="sum" value="{{num1+num2}}">.

    Видите, причина, по которой ваш результат выходил за пределы текстового поля, былапотому что вы не указали его в качестве значения текстового поля, вместо этого оно было явно размещено за его пределами.используя value="{{num1+num2}}", вы устанавливаете значение самого текстового поля.

Код в этом подходе будет выглядеть так:

<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <h1> ANGULAR JS</h1>
  <script src="https://code.angularjs.org/1.6.9/angular.js"></script>
  <script src="E:\akansha\angular-1.7.6\angular.js"></script>
  <script src="E:\akansha\angular-1.7.6\angular.min.js"></script>
  <div ng-app="sumApp" ng-controller="sumCtrl">
    Enter first number<input type="number" ng-model="num1"><br> Enter second number<input type="number" ng-model="num2"><br> Sum
    <input type="text" ng-model="sum" value="{{num1+num2}}">
  </div>
  <script>
    var app = angular.module('sumApp', []);
    app.controller('sumCtrl', function($scope) {
      var a = $scope.num1;
      var b = $scope.num2;
      var c = a + b;
      $scope.sum = c;
    });
  </script>
</body>

</html>

В случае, если вам нужно подождать, пока пользователь введет оба числа, и необходимо рассчитать сумму после того, как оба введены, используйте $watchGroup

$scope.$watchGroup(['num1', 'num2'],function(){ 
    $scope.sum = $scope.num1 + $scope.num2;
});

ЕслиВы хотите, чтобы окно результатов обновлялось так же, как и при вводе 1-го решения, в противном случае, если вам нужно, чтобы страница подождала, пока вы ввели оба числа полностью, просто введите кнопку.при нажатии на кнопку вызовите функцию, которая вычислила бы сумму для вас в контроллере, и установите значение поля результатов из самого контроллера, используя атрибут innerHTML.

вот код таким образом:

<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title></title>
</head>

<body>
  <h1> ANGULAR JS</h1>
  <script src="https://code.angularjs.org/1.6.9/angular.js"></script>
  <script src="E:\akansha\angular-1.7.6\angular.js"></script>
  <script src="E:\akansha\angular-1.7.6\angular.min.js"></script>
  <div ng-app="sumApp" ng-controller="sumCtrl">
    Enter first number<input type="number" ng-model="num1"><br> Enter second number<input type="number" ng-model="num2"><br>
    <button ng-click="add();">Add</button>
    <br><br> Sum
    <input type="text" id="sum" ng-model="sum">
  </div>
  <script>
    var app = angular.module('sumApp', []);
    app.controller('sumCtrl', function($scope) {
      var a = $scope.num1;
      var b = $scope.num2;
      $scope.add = function() {
        $scope.sum = $scope.num1 + $scope.num2;
        document.getElementById("sum").innerHTML = $scope.sum;
      }
    });
  </script>
</body>

</html>
0 голосов
/ 05 марта 2019

Помимо опечатки ng-модели вы должны посмотреть num1, num2 и затем установить модель суммы.текущий код, который вы используете, запускается только один раз при запуске вашего контроллера и не отслеживает последующие изменения:

app.controller('sumCtrl', function($scope){
  $scope.$watchGroup(['num1', 'num2'],function(){
    $scope.sum = 1*$scope.num1 +  1*$scope.num2;
  });
});

Обратите внимание на умножение каждого на 1, которое преобразует значения в число из строки.Это должно быть сделано в случае, если поля ввода просто input type = text вместо input type = number, что приведет к конкатенации строк вместо добавления чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...