J'ai essayé de googler et de jouer avec toutes les combinaisons que je connais, mais je ne parviens pas à initialiser mes cases à cocher.
Exemple:
<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>
Un exemple des données de modules:
[
{
"id": 1,
"name": "Business",
"checked": true
},
{
"id": 2,
"name": "Business 2",
"checked": false
},
]
Que puis-je faire pour définir initialement le statut coché des cases à cocher?
Pour définir la valeur de la case à cocher, vous devez lier le v-model à une valeur. La case à cocher sera cochée si la valeur est véracité. Dans ce cas, vous parcourez modules
et chaque module
a une propriété checked
.
Le code suivant liera la case à cocher avec cette propriété:
<input type="checkbox" v-model="module.checked" v-bind:id="module.id">
Notez que j'ai enlevé v-bind:value="module.id"
. Vous ne devriez pas utiliser v-model
et v-bind:value
sur le même élément. De la vue docs :
<input v-model="something">
est juste du sucre syntaxique pour:
<input v-bind:value="something" v-on:input="something = $event.target.value">
Donc, en utilisant v-model
et v-bind:value
, vous finissez par avoir v-bind:value
deux fois , ce qui pourrait provoquer un comportement indéfini.
Supposons que vous souhaitiez transmettre un accessoire à un composant enfant et que cet accessoire est un booléen déterminant si la case à cocher est cochée ou non. Vous devez ensuite transmettre la valeur booléenne à la propriété v-bind:checked="booleanValue"
ou le chemin le plus court :checked="booleanValue"
, par exemple:
<input
id="checkbox"
type="checkbox"
:value="checkboxVal"
:checked="booleanValue"
v-on:input="checkboxVal = $event.target.value"
/>
Cela devrait fonctionner et la case à cocher affichera la case avec son état booléen actuel (si true cochée, si non cochée).