Setzen eines Kontrollkästchens wie bei Vue.js aktiviert

Lesezeit: 4 Minuten

Ich habe gegoogelt und mit jeder Kombination gespielt, die ich kenne, aber ich kann meine Kontrollkästchen nicht als aktiviert initialisieren.

Beispiel:

<ul class="object administrator-checkbox-list">
    <li v-for="module in modules">
        <label v-bind:for="module.id">
            <input type="checkbox" v-model="form.modules" v-bind:value="module.id" v-bind:id="module.id">
            <span>@{{ module.name }}</span>
        </label>
    </li>
</ul>

Ein Beispiel für die Moduldaten:

[
    {
        "id": 1,
        "name": "Business",
        "checked": true
    },
    {
        "id": 2,
        "name": "Business 2",
        "checked": false
    },
]

Was kann ich tun, um den aktivierten Status der Kontrollkästchen anfänglich festzulegen?

  • was ist der Wert von form.modules?

    – Rogeriolino

    6. Dezember 2016 um 17:28 Uhr

Benutzeravatar von asemahle
asemahle

Um den Status des Kontrollkästchens festzulegen, müssen Sie das v-Modell an einen Wert binden. Das Kontrollkästchen wird aktiviert, wenn der Wert wahr ist. In diesem Fall iterieren Sie über modules und jede module hat ein checked Eigentum.

Der folgende Code bindet das Kontrollkästchen an diese Eigenschaft:

<input type="checkbox" v-model="module.checked" v-bind:id="module.id">

Wenn Sie mehr darüber erfahren möchten, wie v-model in dieser Situation funktioniert, finden Sie hier einen Link zu die Dokumentation über Form Input Binding.

  • Auch aus den Dokumenten: v-bind:true-value=”a” v-bind:false-value=”b”. In meinem Fall habe ich v-bind:true-value=1 v-bind:false-value=0 verwendet

    – McMacerson

    11. November 2017 um 13:20 Uhr

  • Die Antwort ist nicht wirklich richtig. v-model bindet verschiedene Attribute an verschiedene Eingabetypen. v-model auf Kontrollkästchen steuert ihre checked Attribut statt value. Siehe die Antwort von @ricardoorellana für einen alternativen Ansatz.

    – Asologe

    21. Januar 2020 um 9:27 Uhr

  • Dies You shouldn't use v-model and v-bind:value on the same element es gilt nicht für Kontrollkästchen. Ich benutze richtig <input type="checkbox" v-for="item in items" v-model="selectedIDs" v-bind:value="item.id"> wo selectedIDs ist ein Array von IDs von aktivierten Kontrollkästchen. Wert MUSS also verwendet werden. Woher würde Vue wissen, welcher Wert dem Array hinzugefügt werden soll, ohne v-bind:value?

    – Mikep

    14. März um 16:10 Uhr

  • Sie haben Recht. Ich habe die Antwort bearbeitet, um die falschen Informationen zu entfernen.

    – asemahle

    1. September um 23:38 Uhr

Angenommen, Sie möchten eine Stütze an eine untergeordnete Komponente übergeben, und diese Stütze ist ein boolescher Wert, der bestimmt, ob das Kontrollkästchen aktiviert ist oder nicht, dann müssen Sie den booleschen Wert an die übergeben v-bind:checked="booleanValue" oder den kürzeren Weg :checked="booleanValue"zum Beispiel:

<input
    id="checkbox"
    type="checkbox"
    :value="checkboxVal"
    :checked="booleanValue"
    v-on:input="checkboxVal = $event.target.value"
/>

Das sollte funktionieren und das Kontrollkästchen zeigt das Kontrollkästchen mit seinem aktuellen booleschen Zustand an (wenn wahr aktiviert, wenn nicht deaktiviert).

  • Also v-model tatsächlich bindet checkednicht zu value mit <input type=checkbox>? Was bringt es dann, in Ihrem Codebeispiel auch an den Wert zu binden?

    – phil294

    8. November 2019 um 9:03 Uhr


  • Das angegebene Beispiel bedenke, dass du deine haben möchtest checkbox als untergeordnete Komponente, sodass Sie sie nicht verwenden können v-model einfach, weil Sie vermeiden möchten, eine Requisite direkt zu mutieren, da der Wert jedes Mal überschrieben wird, wenn die übergeordnete Komponente erneut gerendert wird. v-model erstellt eine bidirektionale Datenbindung und ändert die übergebene Prop in der untergeordneten Komponente

    – Ricardoellana

    8. November 2019 um 15:58 Uhr

  • Ist es möglich zu binden :checked auf das Ergebnis einer Funktion und Übergabe von Argumenten? Etwas wie :checked="method(id)"?

    – HMR

    28. Februar 2020 um 8:51 Uhr

  • Ja, das ist gültig und möglich @HMR

    – Ricardoellana

    29. Februar 2020 um 0:09 Uhr

Im v-Modell ist der Wert der Eigenschaft möglicherweise kein strikter boolescher Wert und das Kontrollkästchen erkennt den Wert möglicherweise nicht als aktiviert/deaktiviert. Es gibt eine nette Funktion in VueJS, um die Umwandlung in wahr oder falsch vorzunehmen:

<input
  type="checkbox"
  v-model="toggle"
  true-value="yes"
  false-value="no"
>

Benutzeravatar von shotasenga
Shotasenga

Ich hatte ähnliche Anforderungen, aber ich wollte nicht verwenden v-model um den Zustand in der übergeordneten Komponente zu haben. Dann habe ich das zum Laufen gebracht:

<input
  type="checkbox"
  :checked="checked"
  @input="checked = $event.target.checked"
/>

Um den Wert vom übergeordneten Element weiterzugeben, habe ich hier eine kleine Änderung vorgenommen und es funktioniert.

<input
  type="checkbox"
  :checked="aPropFrom"
  @input="$emit('update:aPropFrom', $event.target.checked)"
/>

Ich hatte dieses Problem und konnte einige Stunden lang keine Lösung finden, bis mir klar wurde, dass ich falsch lag prevented native Ereignisse aus auftreten mit:

<input type="checkbox" @click.prevent="toggleConfirmedStatus(render.uuid)"
    :checked="confirmed.indexOf(render.uuid) > -1"
    :value="render.uuid"
/>

entferne den .prevent von dem @click Handler hat mein Problem behoben.

Benutzeravatar von muhammad ahmad
Mohammed Ahmad

<input v-if = "module.checked == true" checked type="checkbox" >
<input v-else-if = "module.checked == false"  type="checkbox" >

Ich habe das mit v-if und v-else-if gelöst

Benutzeravatar von Bitrevo
Bitrewo

Ich verwende sowohl versteckte als auch Kontrollkästchen-Eingaben, um sicherzustellen, dass entweder 0 oder 1 an das Formular gesendet werden. Stellen Sie sicher, dass die Feldnamen identisch sind, damit nur eine Eingabe an den Server gesendet wird.

<input type="hidden" :name="fieldName" value="0">
<input type="checkbox" :name="fieldName" value="1" :checked="checked">

1430840cookie-checkSetzen eines Kontrollkästchens wie bei Vue.js aktiviert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy