如何在 vue.js 模板中编写递归嵌套循环?

Posted

技术标签:

【中文标题】如何在 vue.js 模板中编写递归嵌套循环?【英文标题】:How to write recursive nested loop in vue.js template? 【发布时间】:2021-08-11 09:29:40 【问题描述】:

这是我的数据集


   "items":[
      
         "contentType":"h1",
         "items":[
            
               "contentType":"b",
               "items":[
                  
                     "contentType":"i",
                     "items":[
                        
                     ],
                     "id":9
                  
               ],
               "id":6
            
         ],
         "id":0
      
   ]

我想访问可能是递归的 items 数组。

一般我们使用 v-for 循环。但是我不知道我应该在 vue.js 模板块中做什么。

<span v-for="(item1,index) in mainData.items" :key="index">
</span>

【问题讨论】:

如何将无限循环数据存储在 js 文件中?还是在记忆中?没有多大意义,是吗? 我将数据存储在 vuex 中。 【参考方案1】:

看起来您想要渲染诸如具有递归内容的树结构之类的东西,为此我建议基于one的以下解决方案

Vue.config.devtools = false;
Vue.config.productionTip = false;

Vue.component('tree', 
  props: ['item'],
  template: `
<p>
  <span> item.contentType </span>
  <tree-item-contents :items="item.items"/>
</p>
`
)

Vue.component('tree-item-contents', 
  props: ['items'],
  template: `<ul>
  <li v-for="child in items">
    <tree v-if="child.items" :item="child"/>
    <span v-else> item.contentType </span>
  </li>
</ul>`
)

new Vue(
  el: '#app',

  data() 
    return 
      item: 
        "contentType": "root",
        "items": [
          "contentType": "h1",
          "items": [
            "contentType": "b",
            "items": [
              "contentType": "i",
              "items": [

              ],
              "id": 9
            ],
            "id": 6
          ],
          "id": 0
        ]
      
    
  
)
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>


<div id="app" class="container">
  <tree :item="item" />
</div>

【讨论】:

以上是关于如何在 vue.js 模板中编写递归嵌套循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用vue js循环嵌套的json响应

Vue.js 在 v-for 循环中访问嵌套对象

vue.js - 使用原始 json 中的嵌套数组时,递归组件不会更新

为嵌套数组中的项目添加字符循环 - Vue.js

如何在 Vue.js 中使用带有嵌套属性的 v-model

使用 p 标签的嵌套 v-for 循环在 Vue.js 中不起作用