Ich habe eine Eingabe:
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? '' : disabled">
und in meiner Vue.js-Komponente habe ich:
..
..
ready() {
this.form.name = this.store.name;
this.form.validated = this.store.validated;
},
..
validated
Als a boolean
kann es entweder 0
oder sein 1
, aber egal welcher Wert in der Datenbank gespeichert ist, meine Eingabe ist immer deaktiviert.
Ich muss den Eingang deaktivieren, wenn false
er aktiviert und bearbeitet werden kann.
Aktualisieren:
Dadurch immer ermöglicht die Eingabe (keine Rolle , ich habe 0 oder 1 in der Datenbank):
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? '' : disabled">
Dadurch wurde die Eingabe immer deaktiviert (egal, ob ich 0 oder 1 in der Datenbank habe):
<input type="text" id="name" class="form-control" name="name" v-model="form.name" :disabled="validated ? disabled : ''">
quelle
true
oderfalse
abhängig vom Wert des Elements in IhrerSie könnten eine berechnete Eigenschaft haben, die einen Booleschen Wert zurückgibt, abhängig von den Kriterien, die Sie benötigen.
Dann legen Sie Ihre Logik in eine berechnete Eigenschaft ...
quelle
isDisabled()
innerhalb des HTML-Codes, definiert inData
.Nicht schwer, überprüfen Sie dies.
jsfiddle
quelle
Ihr deaktiviertes Attribut erfordert einen booleschen Wert:
<input :disabled="validated" />
Beachten Sie, wie ich nur überprüft habe, ob
validated
- Dies sollte funktionieren als0 is falsey
... z0 is considered to be false in JS (like undefined or null)
1 is in fact considered to be true
Um besonders vorsichtig zu sein, versuchen Sie:
<input :disabled="!!validated" />
Diese doppelte Negation dreht den
falsey
odertruthy
-Wert von0
oder1
zufalse
odertrue
Glaubst du mir nicht? Gehe in deine Konsole und tippe
!!0
oder!!1
:-)Um sicherzustellen, dass Ihre Nummer
1
oder0
definitiv als Nummer und nicht als Zeichenfolge durchkommt,'1'
oder um'0'
den Wert, den Sie mit einem+
z. B. überprüfen, vorauszusetzen, wird aus<input :disabled="!!+validated"/>
einem String einer Zahl eine Zahl, z+1 = 1 +'1' = 1
Wie David Morrow oben sagte, könnten Sie Ihre bedingte Logik in eine Methode einfügen - dies gibt Ihnen besser lesbaren Code - und einfach die Bedingung, die Sie überprüfen möchten, aus der Methode zurückgeben.quelle
Sie können das
:disabled
Attribut in vue.js bearbeiten .Es akzeptiert einen Booleschen Wert. Wenn dies der Fall ist , wird die Eingabe deaktiviert, andernfalls wird sie aktiviert ...
So etwas wie strukturiert wie unten in Ihrem Fall zum Beispiel:
Lesen Sie dies auch unten:
quelle
Sie können eine berechnete Eigenschaft erstellen und jeden Formulartyp entsprechend seinem Wert aktivieren / deaktivieren.
quelle
Versuche dies
vue js
quelle
Das Deaktivieren des deaktivierten Attributs der Eingabe war überraschend komplex. Für mich gab es zwei Probleme:
(1) Denken Sie daran: Das Attribut "deaktiviert" der Eingabe ist KEIN Boolesches Attribut.
Das bloße Vorhandensein des Attributs bedeutet, dass die Eingabe deaktiviert ist.
Die Ersteller von Vue.js haben dies jedoch vorbereitet ... https://vuejs.org/v2/guide/syntax.html#Attributes
(Danke an @connexo dafür ... Wie füge ich ein deaktiviertes Attribut in den Eingabetext in vuejs ein? )
(2) Außerdem gab es ein Problem mit dem erneuten Rendern des DOM-Timings, das ich hatte. Das DOM wurde nicht aktualisiert, als ich versuchte, zurückzuschalten.
In bestimmten Situationen wird "die Komponente nicht sofort neu gerendert. Sie wird im nächsten 'Tick' aktualisiert."
Aus den Vue.js-Dokumenten: https://vuejs.org/v2/guide/reactivity.html
Die Lösung war zu verwenden:
Vollständigerer Beispielworkflow:
quelle
Kann diese Add-Bedingung verwenden.
quelle
Denken Sie daran, dass ES6-Sets / Karten zum Zeitpunkt des Schreibens nicht reaktiv zu sein scheinen, soweit ich das beurteilen kann.
quelle