В библиотеке AutoNumeric конфигурация играет ключевую роль в том, как числовые значения отображаются, форматируются и интерпретируются. В реальных приложениях редко используется один фиксированный набор параметров — чаще возникает необходимость поддерживать несколько полей ввода с общими настройками, а также динамически изменять поведение форматирования без разрушения текущего состояния инстанса.
Синхронизация настроек в AutoNumeric — это механизм управления конфигурациями между экземплярами, глобальными параметрами и динамически изменяемыми опциями, обеспечивающий согласованное поведение всех связанных элементов.
Каждый экземпляр AutoNumeric существует в рамках собственной конфигурации, которая формируется по следующей цепочке:
При этом итоговая конфигурация представляет собой результат глубокого объединения (deep merge), где более приоритетные уровни перекрывают базовые значения.
AutoNumeric.setGlobalSettingsГлобальный уровень позволяет задать базовое поведение для всех последующих экземпляров.
AutoNumeric.setGlobalSettings({
digitGroupSeparator: ' ',
decimalCharacter: ',',
decimalPlaces: 2
});
После выполнения такого вызова все новые инстансы будут использовать указанные параметры, если они не переопределены локально.
Глобальные настройки:
anDefaultSettingsAutoNumeric позволяет создавать шаблоны настроек, которые можно использовать для нескольких полей ввода.
const currencySettings = {
currencySymbol: '$',
currencySymbolPlacement: 'p',
decimalPlaces: 2
};
const an1 = new AutoNumeric('#input1', currencySettings);
const an2 = new AutoNumeric('#input2', currencySettings);
В данном случае оба инстанса получают одинаковую конфигурацию, но остаются независимыми объектами.
Одним из наиболее важных механизмов синхронизации является возможность клонирования конфигурации существующего инстанса.
const an1 = new AutoNumeric('#input1', {
decimalPlaces: 3,
digitGroupSeparator: ' '
});
const an2 = new AutoNumeric('#input2', an1.getSettings());
Метод getSettings() возвращает текущую активную
конфигурацию, которая может быть повторно использована.
update и setAutoNumeric поддерживает изменение настроек во время выполнения без пересоздания инстанса.
updatean1.update({
decimalPlaces: 0,
currencySymbol: '€'
});
Этот метод изменяет конфигурацию и пересчитывает текущее значение в соответствии с новыми правилами.
set с
изменением форматаan1.set(12345.678);
После изменения настроек отображение значения автоматически адаптируется к новой конфигурации.
В сложных интерфейсах часто требуется синхронизировать несколько полей с общей логикой форматирования.
const sharedSettings = {
decimalPlaces: 2,
decimalCharacter: '.',
digitGroupSeparator: ','
};
const fields = [
new AutoNumeric('#price', sharedSettings),
new AutoNumeric('#tax', sharedSettings),
new AutoNumeric('#total', sharedSettings)
];
Все поля используют одинаковую конфигурацию, но изменения каждого инстанса по-прежнему локальны.
AutoNumeric позволяет обновлять только часть настроек без затрагивания остальных.
an1.update({
decimalPlaces: 4
});
В этом случае:
При построении крупных приложений удобно использовать промежуточные конфигурационные слои.
const baseSettings = {
decimalCharacter: '.',
digitGroupSeparator: ','
};
const priceSettings = {
...baseSettings,
decimalPlaces: 2,
currencySymbol: '$'
};
const weightSettings = {
...baseSettings,
decimalPlaces: 3,
suffixText: ' kg'
};
Такой подход позволяет централизованно управлять общими параметрами и избегать дублирования.
AutoNumeric генерирует события при изменении значения, которые могут использоваться для синхронизации нескольких полей.
an1.node.addEventListener('autoNumeric:rawValueModified', (e) => {
an2.set(e.detail.newRawValue);
});
В этом сценарии:
При работе с несколькими уровнями конфигураций возможны конфликты приоритетов:
update перекрывает глобальные настройкиsetGlobalSettings не влияет на уже созданные
инстансыПонимание иерархии важно для предсказуемого поведения системы форматирования.
В некоторых случаях требуется полное обновление конфигурации через пересоздание инстанса:
an1.remove();
an1 = new AutoNumeric('#input1', newSettings);
Такой подход используется, когда:
При массовой синхронизации важно учитывать нагрузку на DOM:
update могут вызывать перерасчёт
отображенияОптимальной стратегией является пакетное обновление настроек с последующим единичным ререндером.
Несмотря на возможность синхронизации, каждый инстанс AutoNumeric сохраняет изолированное состояние:
Синхронизация в библиотеке всегда является явной операцией, а не автоматическим поведением.