VUE 中可以实现多层循环,有的时候需要在当前循环中拿到上一层循环中的某个字段值或者 index,从而去进行判断或者是干别的事情,可以通过如下方法先拿到父循环的 index,然后通过 index 去拿其他想要的字段值:

N层v-for 里面, 当前层的 index 可以通过 $index 得到 ,上一层的通过 $parent.$index, 在向上也是如此,以此类推!!!

举个栗子:

<div class = "fb-item" v-for = "item in data.questionnaire.questions">
                            <div class = "item-title oneline">
                                <div class = "title-number required">{{item.index}}.</div>
                                <div class = "title-text color-3">{{item.title}}</div>
                                <div class = "title-type color-9"> {{item.type}}</div>
                            </div>

                            <div class = "item-body" v-for = "choice in item.choices" v-if="item.type != '(问答)'">
                                <div class = "choice-body-item oneline" onclick="choiceEvent(this,{{$index}},{{$parent.$index}})">
                                    <img src = "img/ic-unchecked.png" alt = "">
                                    <div class = "item-text color-3">{{choice.content}}</div>
                                </div>
                            </div>

                            <div class = "item-body" v-if="item.type == '(问答)'">
                                <textarea class = "fb-text" id = "" placeholder = "请输入您的感想"></textarea>
                            </div>
                        </div>

在上面的例子中,在第二层循环 choice 里面有一个点击事件,通过这个事件拿到了上一层循环 item 的 index,然后在 JS 代码中,通过拿到的这个 index 就可以去获取 item 中的某个具体字段了。

PS:上面的代码中用的是 VUE 的 1.X 版本,v-for 的写法跟 2.X 的有点区别。

Logo

前往低代码交流专区

更多推荐