AngularJS输入与过滤器的绑定

时间:2015-09-02 19:54:28

标签: angularjs

我有两个需要绑定的输入字段。一个输入表示英亩,另一个表示平方英尺。 当您更新任何一个时,另一个也应该更新,应用正确的转换公式。 问题是我只想要显示两位小数。

标记:

<input type="text" ng-model="acres">
<input type="text" ng-model="sqft">

控制器:

$scope.$watch('acres', function () {
    $scope.sqft = $filter('number')(($scope.acres / 5.23565), 2);
});

$scope.$watch('sqft', function () {
    $scope.acres = $filter('number')(($scope.sqft * 5.54841), 2);
});

2 个答案:

答案 0 :(得分:0)

我认为应该是:

$scope.$watch('acres', function (newVal, oldVal) {
    if (newVal !== oldVal) {
       $scope.sqft = $filter('number')((newVal/ 5.23565), 2);
    }
});

但现在你不能对sqft做同样的事情,否则你将以无限循环结束。

答案 1 :(得分:0)

您可以尝试使用ng-change而不是$watch

标记:

<input type="text" ng-model="acres" ng-change="acresChanged()">
<input type="text" ng-model="sqft" ng-change="sqftChanged()">

控制器:

$scope.acresChanged = function() {
   $scope.sqft = $filter('number')(($scope.acres / 5.23565), 2);
};

$scope.sqftChanged = function() {
   $scope.acres = $filter('number')(($scope.sqft * 5.54841), 2);
};

http://plnkr.co/edit/CyqG5tYhRynkVyBekUx0?p=preview