基于其他字段更新AngularJS字段

Aar*_*ell 1 angularjs

我有一系列输入字段,它们都绑定到AngularJS模型上的属性,这些属性都是可编辑的.

某些字段是基于其他用户输入的可选计算字段,可以在此处找到我正在使用的输入类型的样本.

基本上,如果有人进入的价值timedistance它应该自动工作了speed,或者speeddistance将制定出时间,等等.

mus*_*_ut 5

如果用户指定了所有三个值并且他更改了其中一个,那么问题就不明确了?我猜了一下,决定更改用户触摸的最后一个值,保持最近的两个值不变.

我认为它可以推广到几乎任何公式,但你的milage可能会有所不同.写作很有趣.:)

这是一个工作示例:http://jsbin.com/OsuMaSek/1/edit

$scope.time = 0;
$scope.distance = 0;
$scope.speed = 0;

$scope.touchOrder = {
  speed: 0,
  distance: 0,
  time: 0
};

function getLastTouched() {
  var minTouched = null, minVal = Infinity;
  Object.keys($scope.touchOrder).forEach(function (k) {
    if (minVal > $scope.touchOrder[k]) {
      minVal = $scope.touchOrder[k];
      minTouched = k;
    }
  });
  return minTouched;
}

$scope.totalTouchCount = 0;
$scope.touched = function (valTouched) {
  $scope.totalTouchCount++;

  $scope.touchOrder[valTouched] = $scope.totalTouchCount;

  if ($scope.totalTouchCount >= 2) {
    switch(getLastTouched()) {
      case 'time': $scope.time = $scope.distance / $scope.speed; break;
      case 'distance': $scope.distance = $scope.time * $scope.speed; break;
      case 'speed': $scope.speed = $scope.distance / $scope.time; break;
    }
  }
};
Run Code Online (Sandbox Code Playgroud)