Эта проблема здесь this.amount
фактически возвращает строку. Сначала вам нужно будет преобразовать его в число, например:
formattedAmount() {
return Number(this.amount).toLocaleString();
}
new Vue({
el: "#app",
data: {
amount: 0
},
computed: {
formattedAmount() {
return Number(this.amount).toLocaleString()
}
}
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<h2>Range Formatter</h2>
<p>{{formattedAmount}}</p>
<input type="range" id="range" v-model="amount" min="0" max="1000000">
</div>
Или используйте модификатор .number
, чтобы изменить пользовательский ввод для автоматической типизации как Number
как:
<input v-model.number="amount" type="range" id="range" min="0" max="1000000">
new Vue({
el: "#app",
data: {
amount: 0
},
computed: {
formattedAmount() {
return this.amount.toLocaleString()
}
}
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<h2>Range Formatter</h2>
<p>{{formattedAmount}}</p>
<input type="range" id="range" v-model.number="amount" min="0" max="1000000">
</div>