У меня есть необходимость в вводах для отображения значений, отформатированных на основе пользовательской локали, но модель должна хранить значение в локали en-US, и все это происходит при размытии. У меня есть форматирование полей, работающих, когда пользователь щелкает их, но я не могу понять, как установить значение модели. В моем коде formatedValue правильно настроен для просмотра пользователем, но как мне изменить значение модели как «valueToFormat»? Я попыталсяОбновить представление с отформатированным значением, модель с числовым значением
scope.$modelValue = valueToFormat;
и он работает при просмотре его через отладчик, но как только вид визуализируется значение возвращается к $ viewValue. Как я могу это сделать?
element.bind('blur', function() {
var val = ctrl.$modelValue;
parse(val);
})
ctrl.$formatters.push(function(value) {
if(!value) {
return value;
}
var valueToFormat = getActualValue(value, decimalDelimiter, thousandsDelimiter, decimals, '%') || '0';
return viewMask.apply(prepareNumberToFormatter(valueToFormat, decimals));
});
function parse(value) {
if(!value) {
return value;
}
var valueToFormat = getActualValue(value, decimalDelimiter, thousandsDelimiter, decimals) || '0';
var formatedValue = viewMask.apply(prepareNumberToFormatter(valueToFormat, decimals));
var actualNumber = parseFloat(modelMask.apply(valueToFormat));
ctrl.$viewValue = formatedValue;
ctrl.$render();
return valueToFormat;
}
Почему бы просто не использовать фильтр? – Fals