Предположим, я хочу сделать конвертер величин на AngularJS. Также я хотел бы, чтобы при редактировании одновременно менялись несколько значений.

Это означает, например, что если у нас есть 3 переменные, то при изменении каждой из них 2 другие должны измениться автоматически.

Возможно ли такое?

Ниже приведен неработающий фрагмент из 3 единиц расстояния, петаметров, световых лет и парсеков:

var myApp = angular.module ('myApp', ['myControllers']);

var myControllers = angular.module ('myControllers', []);

myControllers
  .controller ('MyController', ['$ scope', function ($ scope) {
    $ scope.petameters = 10;
    $ scope.lightyears = $ scope.petameters / 9.460730472580800;
    $ scope.parsecs = $ scope.lightyears / 3.2616;
  }]);


    
Петаметры:
Световые годы:
Парсек:

Как заставить работать?

UPDATE

Наконец, я составил следующий код:

var myApp = angular.module ('myApp', ['myControllers']);

var myControllers = angular.module ('myControllers', []);

myControllers
  .controller ('MyController', ['$ scope', function ($ scope) {
    
    $ scope.petametersChanged = function () {
    $ scope.lightyears = $ scope.petameters / 9.460730472580800;
    $ scope.parsecs = $ scope.lightyears / 3.2616;
    }
    
    $ scope.lightyearsChanged = function () {
    $ scope.petameters = $ scope.lightyears * 9.460730472580800;
    $ scope.parsecs = $ scope.lightyears / 3.2616;
    }
    
    $ scope.parsecsChanged = function () {
    $ scope.lightyears = $ scope.parsecs * 3.2616;
      $ scope.petameters = $ scope.lightyears * 9.460730472580800;
    }
    
    $ scope.petameters = 10;
    $ scope.petametersChanged ();
    
  }]);


    
Петаметры:
Световые годы:
Парсек:

Dims

Ответы (1)

Попробуйте это:

JS

var myApp = angular.module('myApp', ['myControllers']);

var myControllers = angular.module('myControllers', []);

myControllers
  .controller('MyController', ['$scope',
    function($scope) {
      $scope.petameters;
      $scope.lightyears;
      $scope.parsecs;

      $scope.update = function(unit) {
        console.log('In Update');
        if(unit === 1) {
          $scope.lightyears = $scope.petameters / 9.460730472580800;
          $scope.parsecs = $scope.lightyears / 3.2616;
        } else if(unit === 2) {
          $scope.petameters = $scope.lightyears * 9.460730472580800;
          $scope.parsecs = $scope.lightyears / 3.2616;
        } else {
          $scope.lightyears = $scope.parsecs * 3.2616;
          $scope.petameters = $scope.lightyears * 9.460730472580800;
        }
      };
    }
  ]);

HTML


  
Petameters:
Light years:
Parsecs:

Вот Plunker

2022 WebDevInsider