Ich habe einige Daten, auf die zugegriffen werden kann über:
{{ content['term_goes_here'] }}
... und dies entweder true
oder bewertet false
. Ich möchte eine Klasse hinzufügen, die von der Wahrhaftigkeit des Ausdrucks abhängt:
<i class="fa" v-bind:class="[{{content['cravings']}} ? 'fa-checkbox-marked' : 'fa-checkbox-blank-outline']"></i>
wo true
gibt mir die Klasse fa-checkbox-marked
und falsch würde mir geben fa-checkbox-blank-outline
. Die Art und Weise, wie ich es oben geschrieben habe, gibt mir einen Fehler:
- invalid expression: v-bind:class="[{{content['cravings']}} ? 'fa-checkbox-marked' : 'fa-checkbox-blank-outline']"
Wie soll ich es schreiben, um die Klasse bedingt bestimmen zu können?
javascript
vue.js
vuejs2
conditional-formatting
Jeremy Thomas
quelle
quelle
<button :class="disabled && 'disabled'">
eine Abkürzung tun<button :class="disabled ? 'disabled' : false">
.Antworten:
Verwenden Sie die Objektsyntax .
v-bind:class="{'fa-checkbox-marked': content['cravings'], 'fa-checkbox-blank-outline': !content['cravings']}"
Wenn das Objekt komplizierter wird, extrahieren Sie es in eine Methode.
v-bind:class="getClass()" methods:{ getClass(){ return { 'fa-checkbox-marked': this.content['cravings'], 'fa-checkbox-blank-outline': !this.content['cravings']} } }
Schließlich können Sie diese Funktion für jede solche Content-Eigenschaft verwenden.
v-bind:class="getClass('cravings')" methods:{ getClass(property){ return { 'fa-checkbox-marked': this.content[property], 'fa-checkbox-blank-outline': !this.content[property] } } }
quelle
<i class="fa" :class="[{ 'fa-checkbox-marked': content['cravings'] }, 'fa-checkbox-blank-outline']"></i>
vue-router
Änderung von einer externen Quelle stammen ? (Beispiel: anthis.$router.push('/homepage')
anderer Stelle in einer anderen Komponente genannt)$route
auf Änderungen achten und Ihre Klassen nach Bedarf ändern können. router.vuejs.org/en/api/route-object.html<i class="fa" v-bind:class="cravings"></i>
und addieren berechnet:
computed: { cravings: function() { return this.content['cravings'] ? 'fa-checkbox-marked' : 'fa-checkbox-blank-outline'; } }
quelle
Übergeben Sie ein Objekt an v-bind: class, um die Klasse dynamisch umzuschalten:
<div v-bind:class="{ disabled: order.cancelled_at }"></div>
Dies wird in den Vue-Dokumenten empfohlen .
quelle
Das Problem ist Klinge, versuchen Sie dies
<i class="fa" v-bind:class="['{{content['cravings']}}' ? 'fa-checkbox-marked' : 'fa-checkbox-blank-outline']"></i>
quelle
wenn Sie separate CSS - Klassen für gleiches Element mit den Bedingungen in anwenden mögen Vue.js können Sie in meinem Szenario verwenden arbeiten die unten angegebene method.it.
html
<div class="Main" v-bind:class="{ Sub: page}" >
Hier sind Main und Sub zwei verschiedene Klassennamen für dasselbe div-Element. v-bind: Klassenanweisung wird verwendet, um die Unterklasse hier zu binden. page ist die Eigenschaft, mit der wir die Klassen aktualisieren, wenn sich ihr Wert ändert.
js
data:{ page : true; }
Hier können wir bei Bedarf eine Bedingung anwenden. so, wenn die Seite Eigenschaft true Element wird mit gehen Haupt und Sub claases CSS - Stilen. aber wenn er falsch ist nur Hauptklasse CSS - Stile werden angewendet.
quelle