Tengo una entrada:
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? '' : disabled">
y en mi componente Vue.js, tengo:
..
..
ready() {
this.form.name = this.store.name;
this.form.validated = this.store.validated;
},
..
validated
siendo un boolean
, puede ser uno 0
o 1
, pero no importa qué valor esté almacenado en la base de datos, mi entrada siempre está deshabilitada.
Necesito que la entrada esté deshabilitada si false
, de lo contrario, debería estar habilitada y editable.
Actualizar:
Hacer esto siempre habilita la entrada (no importa que tenga 0 o 1 en la base de datos):
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? '' : disabled">
Hacer esto siempre deshabilitó la entrada (no importa que tenga 0 o 1 en la base de datos):
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? disabled : ''">
fuente
true
ofalse
dependiendo del valor del elemento en su base de datospodría tener una propiedad calculada que devuelva un valor booleano dependiente de los criterios que necesite.
luego ponga su lógica en una propiedad calculada ...
fuente
isDisabled()
dentro del HTML, definido enData
.No es difícil, mira esto.
jsfiddle
fuente
Su atributo deshabilitado requiere un valor booleano:
<input :disabled="validated" />
Observe cómo solo he verificado si
validated
: esto debería funcionar como0 is falsey
... por ejemplo0 is considered to be false in JS (like undefined or null)
1 is in fact considered to be true
Para tener más cuidado, intente:
<input :disabled="!!validated" />
Esta doble negación convierte el
falsey
otruthy
valor de0
o1
afalse
otrue
no me crees? entra a tu consola y escribe
!!0
o!!1
:-)Además, para asegurarse de que su número
1
o0
definitivamente aparece como un Número y no como la Cadena'1'
o'0'
anteponer el valor que está verificando con,+
por ejemplo,<input :disabled="!!+validated"/>
esto convierte una cadena de un número en un Número, por ejemplo+1 = 1 +'1' = 1
Como dijo David Morrow anteriormente, podría poner su lógica condicional en un método, esto le da un código más legible , simplemente devuelva del método la condición que desea verificar.fuente
Puede manipular
:disabled
atributo en vue.js .Aceptará un valor booleano, si es cierto , la entrada se deshabilita, de lo contrario se habilitará ...
Algo así como estructurado como a continuación en su caso, por ejemplo:
También lea esto a continuación:
fuente
Puede hacer una propiedad calculada y habilitar / deshabilitar cualquier tipo de formulario de acuerdo con su valor.
fuente
Prueba esto
vue js
fuente
Para alternar el atributo deshabilitado de la entrada fue sorprendentemente complejo. El problema para mí fue doble:
(1) Recuerde: el atributo "deshabilitado" de la entrada NO es un atributo booleano .
La mera presencia del atributo significa que la entrada está deshabilitada.
Sin embargo, los creadores de Vue.js han preparado esto ... https://vuejs.org/v2/guide/syntax.html#Attributes
(Gracias a @connexo por esto ... ¿Cómo agregar un atributo deshabilitado en el texto de entrada en vuejs? )
(2) Además, había un problema de representación de temporización DOM que estaba teniendo. El DOM no se estaba actualizando cuando traté de alternar.
En ciertas situaciones, "el componente no se volverá a procesar de inmediato. Se actualizará en el próximo 'tick'".
De los documentos de Vue.js: https://vuejs.org/v2/guide/reactivity.html
La solución fue usar:
Flujo de trabajo de ejemplo más completo:
fuente
Puede usar esta condición adicional.
fuente
Tenga en cuenta que los conjuntos / mapas de ES6 no parecen ser reactivos hasta donde puedo decir, al momento de escribir.
fuente