我是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;
};
});
谢谢