我试图编写一个指令,在幕后将逗号转换为点,以便输入字段中的输入可以正确保存到数据库中。我仍然希望该字段显示未经编辑的输入。
我得到了以下内容:
App.directive('input', function () {
return {
restrict: 'E',
require: 'ngModel',
scope: {
},
link: function(scope, iElement, iAttrs, ngModelController) {
if (iAttrs.type !== 'commasallowed') return;
iElement.unbind('input');
iElement.bind('input', function() {
ngModelController.$render = function() {
console.log("start render");
iElement.val(scope.screenValue);
};
scope.$apply(function () {
scope.screenValue = iElement.val();
scope.toDb = parseFloat(scope.screenValue.toString().replace(",", "."));
ngModelController.$setViewValue(scope.toDb);
console.log(ngModelController.$viewValue);
ngModelController.$render();
});
});
}
};
});
当我开始输入输入字段时,第25行的console.log记录了ngModelController的正确值。$ viewValue被正确记录为带点而不是逗号的数字, 但是当我处理表单时,只保存点之前的数字....