Estoy aprendiendo Vue con un curso en línea y el instructor me dio un ejercicio para hacer un texto de entrada con un valor predeterminado. Lo completé usando v-model pero, el instructor eligió v-bind: value y no entiendo por qué.
¿Alguien puede darme una explicación simple sobre la diferencia entre estos dos y cuándo es mejor usar cada uno?
javascript
mvvm
frameworks
vue.js
frontend
Gustavo Dias
fuente
fuente
v-model
se usa principalmente para la entrada y la oferta de formularios, así que úselo cuando trabaje con varios tipos de entrada.v-bind
La directiva le permite producir algún valor dinámico al escribir alguna expresión JS que en la mayoría de los casos depende de los datos del modelo de datos, así que piense en v-bind como directiva que debe usar cuando desee lidiar con algunas cosas dinámicas.<div v-bind:class="{ active: isActive }"></div>
- no puede enlazar el atributo html usando el modelo, debe usar lav-bind
directiva. Para los elementos del formulario, querrá usar lav-model
directiva: "selecciona automáticamente la forma correcta de actualizar el elemento según el tipo de entrada".data
yprops
...Respuestas:
Desde aquí - Recuerda:
es esencialmente lo mismo que:
o (sintaxis abreviada):
Entonces,
v-model
es un enlace bidireccional para entradas de formulario . Se combinav-bind
, lo que aporta un valor js al marcado, yv-on:input
para actualizar el valor js .Úselo
v-model
cuando pueda. Usev-bind
/v-on
cuando debe :-) Espero que su respuesta haya sido aceptada.v-model
funciona con todos los tipos básicos de entrada HTML (texto, área de texto, número, radio, casilla de verificación, seleccionar). Puede usarv-model
coninput type=date
si su modelo almacena fechas como cadenas ISO (aaaa-mm-dd). Si desea usar objetos de fecha en su modelo (una buena idea tan pronto como los vaya a manipular o formatear), haga esto .v-model
tiene algunos conocimientos adicionales que es bueno tener en cuenta. Si está utilizando un IME (muchos teclados móviles, o chino / japonés / coreano), v-model no se actualizará hasta que se complete una palabra (se ingrese un espacio o el usuario abandone el campo).v-input
disparará con mucha más frecuencia.v-model
también tiene modificadores.lazy
,.trim
,.number
, cubierto en el doc .fuente
v-model
yv-bind:xxx.sync
?En palabras simples
v-model
es para enlaces bidireccionales : si cambia el valor de entrada, los datos enlazados se cambiarán y viceversa .pero
v-bind:value
se llama enlace unidireccional que significa: puede cambiar el valor de entrada cambiando los datos enlazados, pero no puede cambiar los datos enlazados cambiando el valor de entrada a través del elemento .mira este sencillo ejemplo: https://jsfiddle.net/gs0kphvc/
fuente
this.data_source = 'Some new value'
data_source
, te refieres al HTML inyectado en DOM desdeinput
, ¿verdad?v-model
es un enlace de datos bidireccional, se usa para vincular el elemento de entrada html cuando cambia el valor de entrada, luego los datos delimitados serán cambiados.
v-model se usa solo para elementos de entrada HTML
v-bind
es un enlace de datos unidireccional, significa que solo puede enlazar datos al elemento de entrada pero no puede cambiar el elemento de entrada que cambia los datos delimitados. v-bind se usa para enlazar el atributo html, por
ejemplo:
<input type="text" v-bind:class="abc" v-bind:value="">
fuente
Espero que esto te ayude con la comprensión básica
fuente
Hay casos en los que no quieres usar
v-model
. Si tiene dos entradas y cada una depende de la otra, es posible que tenga problemas de referencia circulares. Los casos de uso comunes son si está construyendo una calculadora contable.En estos casos, no es una buena idea usar observadores ni propiedades calculadas.
En su lugar, tome su
v-model
y divídalo como la respuesta anterior indicaEn la práctica, si está desacoplando su lógica de esta manera, probablemente llamará a un método.
Así es como se vería en un escenario del mundo real:
fuente