Прежде всего: Svelte все еще новичок для меня. Надеюсь, вопрос не слишком тривиален.
Внутри простого компонента я хочу использовать для вычисления содержимое поля ввода .
Например:
В поле ввода должна отображаться сумма в евро. отформатированный (1.000). Рядом с ним должен отображаться текст с суммой плюс НДС (1.190).
Как мне это сделать без форматирования , мне понятно. Пример выглядит так:
export let net;
export let vat;
$: gross = net + (net * vat / 100);
$: grossPretty = gross.toLocaleString('de-DE',{ minimumFractionDigits: 0, maximumFractionDigits: 0 });
с простой разметкой, подобной этой:
<form>
<label>Net amount</label>
<input type="text" step="any" bind:value={net} placeholder="Net amount">
</form>
<div>
Gros = {grossPretty} €
</div>
В vue я использовал вычисляемое свойство. Его getter доставляет отформатированную строку, а setter принимает отформатированную строку и сохраняет необработанное значение. (В data () я определяю net, в вычисляемых свойствах я определяю netInput. Поле ввода использует netInput как v-модель) .
Это выглядит так:
netInput: {
get(){
return this.net.toLocaleString('de-DE',{ minimumFractionDigits: 0, maximumFractionDigits: 0 });
},
set(s){
s = s.replace(/[\D\s._-]+/g, "");
this.net = Number(s);
}
}
Как мне справиться с этим в svelte?