AngularJS相关输入链接到同一范围变量

时间:2015-03-08 10:15:39

标签: angularjs input infinite-loop

我是angularJS的新手,我正在尝试设计一个包含2个输入字段的表单,这些字段内部绑定到同一个范围变量:第一个字段是以km / h为单位的速度,第二个字段是速度以m / s为单位。我想要获得的行为是:无论用户更改哪个字段,其他字段都将更新。

我遇到的问题如下:

当用户改变以m / s为单位的速度时,以km / h为单位的速度会更新,从而导致以m / s为单位再次更新速度,以km / h更新速度直至无值变化。副作用是当速度以m / s为单位表示1并且用户更改该值使其十进制进入小数点时 - 更新循环导致删除点,因为从微积分的角度来看1.是1。

避免这种情况的最佳方法是什么?

以下是代码片段(html):

  <label for="SpeedKm">Speed (Km/h):</label>
  <input id="SpeedKm" name="SpeedKm" type="text" 
    placeholder="km/h"  
    ng-model="speedKmh"
    ng-model-options="{ getterSetter: true}">
  >
  <label for="SpeedMs">Speed (m/s):</label>
  <input id="SpeedMs" name="SpeedMs" type="text" 
    placeholder="m/s"  
    ng-model="speedMs"
    ng-model-options="{ getterSetter: true}">
  >

和控制器

angular.module('speedconverter') 
 .controller('MainCtrl', ['$scope', function ($scope) {
   $scope.speed = 10; //km/h
   $scope.speedKmh = function(newValue) {
     if (angular.isDefined(newValue)) {
       $scope.speed = newValue;
     }
     return $scope.speed;
   };
   $scope.speedms = function(newValue) {
     if (angular.isDefined(newValue)) {
       $scope.speed = newValue*3.6;
     }
     return $scope.speed/3.6;
   };
 });

谢谢

0 个答案:

没有答案