Eu tenho uma entrada:
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? '' : disabled">
e no meu componente Vue.js, tenho:
..
..
ready() {
this.form.name = this.store.name;
this.form.validated = this.store.validated;
},
..
validated
sendo um boolean
, pode ser um 0
ou 1
, mas, independentemente do valor armazenado no banco de dados, minha entrada está sempre desativada.
Preciso que a entrada seja desabilitada se false
, caso contrário, ela deve ser ativada e editável.
Atualizar:
Fazer isso sempre ativa a entrada (independentemente de eu ter 0 ou 1 no banco de dados):
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? '' : disabled">
Fazer isso sempre desabilitou a entrada (independentemente de eu ter 0 ou 1 no banco de dados):
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? disabled : ''">
fonte
true
oufalse
, dependendo do valor do item em seu dbvocê pode ter uma propriedade computada que retorna um valor booleano, dependendo de qualquer critério necessário.
então coloque sua lógica em uma propriedade computada ...
fonte
isDisabled()
dentro do HTML, definido emData
.Não é difícil, verifique isso.
jsfiddle
fonte
Seu atributo desativado requer um valor booleano:
<input :disabled="validated" />
Observe como eu só verifiquei se
validated
- Isso deve funcionar como0 is falsey
... por exemplo0 is considered to be false in JS (like undefined or null)
1 is in fact considered to be true
Para ter um cuidado extra, tente:
<input :disabled="!!validated" />
Esta dupla negação transforma o
falsey
outruthy
valor de0
ou1
parafalse
outrue
não acredita em mim? entre no seu console e digite
!!0
ou!!1
:-)Além disso, para garantir que seu número
1
ou0
definitivamente esteja sendo transmitido como um número e não como a seqüência de caracteres'1'
ou'0'
pré-pendure o valor que você está verificando com, por+
exemplo,<input :disabled="!!+validated"/>
isso transforma uma sequência de números em um número, por exemplo+1 = 1 +'1' = 1
Como David Morrow disse acima, você pode colocar sua lógica condicional em um método - isso fornece um código mais legível - basta retornar do método a condição que você deseja verificar.fonte
Você pode manipular
:disabled
atributo no vue.js .Ele aceitará um booleano, se for verdade , a entrada será desativada, caso contrário, será ativada ...
Algo como estruturado como abaixo no seu caso, por exemplo:
Leia também abaixo:
fonte
Você pode criar uma propriedade computada e ativar / desativar qualquer tipo de formulário de acordo com seu valor.
fonte
Tente isto
vue js
fonte
Alternar o atributo desativado da entrada era surpreendentemente complexo. A questão para mim era dupla:
(1) Lembre-se: o atributo "disabled" da entrada NÃO é um atributo booleano .
A mera presença do atributo significa que a entrada está desativada.
No entanto, os criadores do Vue.js prepararam isso ... https://vuejs.org/v2/guide/syntax.html#Attributes
(Obrigado ao @connexo por isso ... Como adicionar atributo desabilitado no texto de entrada no vuejs? )
(2) Além disso, havia um problema de re-renderização do tempo do DOM que eu estava tendo. O DOM não estava sendo atualizado quando tentei voltar.
Em determinadas situações, "o componente não será renderizado imediatamente. Ele será atualizado no próximo 'tick'."
Dos documentos do Vue.js: https://vuejs.org/v2/guide/reactivity.html
A solução foi usar:
Exemplo de fluxo de trabalho mais completo:
fonte
Pode usar esta condição de adição.
fonte
Lembre-se de que os Conjuntos / Mapas ES6 não parecem ser reativos, até onde eu sei, no momento em que escrevo.
fonte