当使用对象数组时,在v-for循环中是否可以同时将当前对象赋值给一个变量并解构其属性?像这样:
v-for
<div v-for="(person = {name, age}, index) in persons">
最终我希望能够在模板中同时使用整个person对象和它的属性。
person
据我所知,你不能同时做这两件事。
但是,你可以解构,例如:
<div v-for="({name, age}, index) in persons">
然后你可以通过索引访问正确的元素:persons[index]。
persons[index]
示例:
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>
据我所知,你不能同时做这两件事。
但是,你可以解构,例如:
然后你可以通过索引访问正确的元素:
persons[index]
。示例: