Maison  >  Questions et réponses  >  le corps du texte

"Utilisation de la directive v-for pour la déstructuration des éléments et attributs du tableau"

Lors de l'utilisation d'un tableau d'objets, est-il possible d'attribuer simultanément l'objet actuel à une variable et de déstructurer ses propriétés dans une v-forboucle ? Comme ça :

<div v-for="(person = {name, age}, index) in persons">

À terme, je veux pouvoir utiliser à la fois l'intégralité de l'objet person et ses propriétés dans un modèle.

P粉420958692P粉420958692348 Il y a quelques jours606

répondre à tous(1)je répondrai

  • P粉115840076

    P粉1158400762023-11-06 15:56:06

    À ma connaissance, on ne peut pas faire les deux en même temps.

    Cependant, vous pouvez le déconstruire, par exemple :

    <div v-for="({name, age}, index) in persons">
    

    Vous pouvez ensuite accéder au bon élément via l'index : persons[index].


    Exemple :

    new Vue({
      el: "#app",
      data: {
        todos: [{
            text: "Learn JavaScript",
            done: false
          },
          {
            text: "Learn Vue",
            done: false
          },
          {
            text: "Play around in JSFiddle",
            done: true
          },
          {
            text: "Build something awesome",
            done: true
          }
        ]
      },
      methods: {
        toggle: function(index) {
          this.todos[index].done = !this.todos[index].done
        }
      }
    })
    body {
      background: #20262E;
      padding: 20px;
      font-family: Helvetica;
    }
    
    #app {
      background: #fff;
      border-radius: 4px;
      padding: 20px;
      transition: all 0.2s;
    }
    
    li {
      margin: 8px 0;
    }
    
    h2 {
      font-weight: bold;
      margin-bottom: 15px;
    }
    
    del {
      color: rgba(0, 0, 0, 0.3);
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
    <div id="app">
      <h2>Todos:</h2>
      <ol>
        <li v-for="({text, done}, i) in todos">
          <label>
            <input type="checkbox"
              v-on:change="toggle(i)"
              v-bind:checked="done">
    
            <del v-if="done">
              {{ text }}
            </del>
            <span v-else>
              {{ text }}
            </span>
            
            {{todos[i]}}
          </label>
        </li>
      </ol>
    </div>

    répondre
    0
  • Annulerrépondre