我有一个数学函数,它将两个输入字段相加,然后将值放在第三个字段中。我还有一个过滤器,可将美分添加到输入中。您会在plunkr中看到该过滤器未应用于修订后的契约(Contract)。原始契约(Contract)+总CO =修订后的契约(Contract)。
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;
});
最佳答案
$parsers
仅在您从DOM中更改ngmodel值时运行(例如:在输入框中输入)。当您以编程方式更改值时(就像对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