Javascript Vue.js将值显示为价格,但将其保持为int
我有一个名为“formatted number”的vue组件,它接收一个int值(1234)并将其当前更改为一个字符串(“12.34”),以便在文本字段中显示为一个价格(根据国家/地区的不同使用“、”或“.”) 我希望将值保留为int,并将其显示为price,这样我们的用户就可以编辑“stringprice”,但它也会在后台更新int值 有人知道我该怎么做吗 以下是当前代码:Javascript Vue.js将值显示为价格,但将其保持为int,javascript,focus,vue.js,Javascript,Focus,Vue.js,我有一个名为“formatted number”的vue组件,它接收一个int值(1234)并将其当前更改为一个字符串(“12.34”),以便在文本字段中显示为一个价格(根据国家/地区的不同使用“、”或“.”) 我希望将值保留为int,并将其显示为price,这样我们的用户就可以编辑“stringprice”,但它也会在后台更新int值 有人知道我该怎么做吗 以下是当前代码: Vue.component('formattedNumber', { props: ['value', 'abs
Vue.component('formattedNumber', {
props: ['value', 'abs'],
template: '<input type="text" :value="value" autocomplete="off" @blur="updateNumber($event.target.value)" ref="input">',
mounted: function () {
this.updateNumber(this.value / 100);
},
methods: {
separators: function () {
var comparer = new Intl.NumberFormat(navigator.language).format(10000 / 3);
return {
thousandSeparator: comparer[1],
decimalSeparator: comparer[5]
};
},
unformat: function (number) {
var separators = this.separators();
var result = number
.toLocaleString(navigator.language)
.replace(separators.thousandSeparator, '')
.replace(/[^\d.,-]/g, '')
.replace(separators.decimalSeparator, '.');
return this.abs ? Math.abs(Number(result)) : this.Number(result);
},
updateNumber: function (value) {
this.$emit('input', new Intl.NumberFormat(
navigator.language,
{minimumFractionDigits: 2, maximumFractionDigits: 2}).format(this.unformat(value)
));
}
}
});
Vue.component('formattedNumber'{
道具:['value','abs'],
模板:“”,
挂载:函数(){
this.updateNumber(this.value/100);
},
方法:{
分隔符:函数(){
var comparer=新的Intl.NumberFormat(navigator.language).format(10000/3);
返回{
千位分隔符:比较器[1],
小数分隔符:比较器[5]
};
},
未格式化:函数(编号){
var separators=this.separators();
var结果=数字
.tolocalString(navigator.language)
.更换(分离器。千分之一分离器“”)
.替换(/[^\d,-]/g,,)
.替换(分隔符。小数分隔符“.”);
返回this.abs?Math.abs(Number(result)):this.Number(result);
},
updateNumber:函数(值){
此.$emit('input',新的Intl.NumberFormat(
navigator.language,
{minimumFractionDigits:2,maximumFractionDigits:2}).format(this.unformat(值)
));
}
}
});
创建一个筛选器:
过滤器只会更改html输出并保持值不变。我有点忙,但这会让您非常接近:+1。过滤器可以工作,但您也可以使用computed返回值。我的理解是,幕后的计算机有某种缓存,因此有时效率更高。