v-for不能更新迭代器本身

220 阅读1分钟

v-for不能更新迭代器本身

问题代码:

<template>
    <Card ref="processnode"
            v-for="(processNode, index) in processNodeList"
            :key="index"
            :index="index"
            :departPersonnel="departPersonnel"
            :processNode.sync="processNode"
            @pop-node="removeNode" />
</template>

描述:在使用v-for的时候循环Card组件时,使用了.sync语法糖,就是子组件双向绑定父组件的数据。那么,我将processNodeList的子项(元素)processNode传给子组件,这时就报出了下面的错误:

‘v-model‘ directives cannot update the iteration variable ‘item‘ itself.

解决方法:

不要将数组的元素也就是processNodeList的子项(元素),直接通过.sync绑定传给子组件,而是通过数组的下标获取到对应的子项(元素)再通过.sync绑定传给子组件。

<template>
    <Card ref="processnode"
            v-for="(processNode, index) in processNodeList"
            :key="index"
            :index="index"
            :departPersonnel="departPersonnel"
            :processNode.sync="processNodeList[index]"
            @pop-node="removeNode" />
</template>

出现问题处解决前后对比:

:processNode.sync="processNode":processNode.sync="processNodeList[index]"