如何保持Angular数学函数的美分

时间:2014-10-09 19:26:31

标签: javascript angularjs angularjs-directive

我有一个数学函数,它添加了两个输入字段并将值放在第三个。我还有一个过滤器,可以在输入中添加美分。您将在plunkr中看到过滤器未应用于修订合同。原始合同+总CO =修订合同。 plunkr

$scope.$watch('currentItem.JobOriginalContract -- currentItem.JobTotalCO', function (value) {
    if (!$scope.currentItem) $scope.currentItem = {};
    $scope.currentItem.JobRevisedContract = value;
});
$scope.$watch('currentItem.JobRevisedContract * .85 ', function (value) {
    if (!$scope.currentItem) $scope.currentItem = {};
    $scope.currentItem.JobOriginalBudget = value;
});

1 个答案:

答案 0 :(得分:3)

$parsers仅在您从DOM更改ngmodel值时运行(例如: - 在输入框中输入)。当您以编程方式更改值时(与JobRevisedContractJobOriginalBudget一样),运行$formatters。所以你需要格式化格式化。

实施例: -

    ctrl.$formatters.unshift(function (a) {
      return getFormattedValue(ctrl.$modelValue);
    });

    ctrl.$parsers.unshift(function (viewValue) {
        var plainNumber = viewValue.replace(/[^\d|\-+]/g, '');
        elem.val(getFormattedValue(plainNumber));
        return plainNumber;
    });

    function getFormattedValue(value){
      return $filter(attrs.format)(value/100,2);
    }

<强> Demo