Javascript Vue.js将值显示为价格,但将其保持为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

我有一个名为“formatted number”的vue组件,它接收一个int值(1234)并将其当前更改为一个字符串(“12.34”),以便在文本字段中显示为一个价格(根据国家/地区的不同使用“、”或“.”)

我希望将值保留为int,并将其显示为price,这样我们的用户就可以编辑“stringprice”,但它也会在后台更新int值

有人知道我该怎么做吗

以下是当前代码:

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返回值。我的理解是,幕后的计算机有某种缓存,因此有时效率更高。