编程语言
首页 > 编程语言> > javascript-如何将美分保持在Angular数学函数中

javascript-如何将美分保持在Angular数学函数中

作者:互联网

我有一个数学函数,将两个输入字段相加并将其值放在第三个字段中.我还有一个过滤器,可将美分添加到输入中.您会在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;
});

解决方法:

仅当您从DOM中更改ngmodel值时(例如,在输入框中输入),才运行$parsers.当您以编程方式更改值时(就像对JobRevisedContract和JobOriginalBudget所做的那样),它将运行$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

标签:angularjs,angularjs-directive,javascript
来源: https://codeday.me/bug/20191121/2049780.html