Saltar al contenido

¿Cuál es la forma correcta de implementar el formato en v-model en Vue.js 2.0?

Solución:

Consulte este ejemplo de jsFiddle que funciona: https://jsfiddle.net/mani04/bgzhw68m/

En este ejemplo, la entrada de moneda formateada es un componente en sí mismo, que usa v-model al igual que cualquier otro elemento de formulario en Vue.js. Puede inicializar este componente de la siguiente manera:

<my-currency-input v-model="price"></my-currency-input>

my-currency-input es un componente autónomo que formatea el valor de la moneda cuando el cuadro de entrada es inactivo. Cuando el usuario coloca el cursor dentro, el formato se elimina para que el usuario pueda modificar el valor cómodamente.

Así es como funciona:

los my-currency-input el componente tiene un valor calculado – displayValue, que tiene get y set métodos definidos. En el get método, si el cuadro de entrada no está activo, devuelve el valor de moneda formateado.

Cuando el usuario escribe en el cuadro de entrada, el set método de displayValue propiedad calculada emite el valor usando $emit, notificando así al componente principal sobre este cambio.

Referencia para usar v-model en componentes personalizados: https://vuejs.org/v2/guide/components.html#Form-Input-Components-using-Custom-Events

Aquí hay un ejemplo de trabajo: https://jsfiddle.net/mani04/w6oo9b6j/

Funciona modificando la cadena de entrada (su valor de moneda) durante los eventos de enfoque hacia afuera y hacia adentro, de la siguiente manera:

<input type="text" v-model="formattedCurrencyValue" @blur="focusOut" @focus="focusIn"/>
  1. Cuando coloca el cursor dentro del cuadro de entrada, toma this.currencyValue y lo convierte a formato plano, para que el usuario pueda modificarlo.

  2. Una vez que el usuario escribe el valor y hace clic en otro lugar (enfocar hacia afuera), this.currencyValue se vuelve a calcular después de ignorar los caracteres no numéricos y el texto de la pantalla se formatea según sea necesario.

El formateador de moneda (reg exp) se puede copiar y pegar desde aquí: ¿Cómo puedo formatear números como dinero en JavaScript?

Si no desea el punto decimal como mencionó en la pregunta, puede hacerlo this.currencyValue.toFixed(0) en el focusOut método.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *