【发布时间】:2020-01-30 08:29:15
【问题描述】:
首先: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-model)。
它看起来像这样:
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 中处理它?
【问题讨论】:
标签: binding number-formatting getter-setter svelte input-field