列表嵌套列表 取父元素的值 拼接 字段A.字段A1.字段A11

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <style type="text/css">
        .forComponent {
            border: 1px solid gray;
        }

        <style>
    </style>
</head>

<body>

    <script type="text/template" id="item-template">
      <div>
          <div class='forComponent'>
            <h4>{{parent}}.{{model.name}}</h4>
          </div>
          <div class='suojin'>
              <item v-for='child in model.children' :model='child' :parent="parent+'.'+model.name"></item>
          </div>
      </div>
  </script>

    <div id='demo'>
        <item v-for='model in treeData' :model='model' parent="HOME"></item>
    </div>

    <script type="text/javascript"> 
        var data = [{ "id": "62", "name": "字段a", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "64", "name": "字段a1", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "65", "name": "字段a11", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }, { "id": "70", "name": "字段a12", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }] }] },
        { "id": "63", "name": "字段b", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "66", "name": "ziduanb1", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }] },
        { "id": "67", "name": "字段c", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 },
        { "id": "68", "name": "字段D", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "69", "name": "字段D1", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }] },
        ]
        
        Vue.component("item", {
            template: '#item-template',
            props: {
                model: Object,
                parent: String
            },
            data: function () {
                return {

                }
            }
        })

        var demo = new Vue({
            el: '#demo',
            data: {
                treeData: data,
            }
        })
    </script>
</body>

</html>

另一种情况:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <style type="text/css">
        .forComponent {
            border: 1px solid gray;
        }

        <style>
    </style>
</head>

<body>

    <script type="text/template" id="item-template">
      <div>
          <div class='forComponent'>
            <h4>{{parent ? parent +'.' +model.name : model.name}}</h4>
          </div>
          <div class='suojin'>
              <item v-for='child in model.children' :model='child'  :parent="parent ? parent+'.'+model.name : model.name"></item>
          </div>
      </div>
  </script>

    <div id='demo'>
        <item v-for='model in treeData' :model='model' parent=""></item>
    </div>

    <script type="text/javascript"> 
        var data = [{ "id": "62", "name": "字段a", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "64", "name": "字段a1", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "65", "name": "字段a11", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }, { "id": "70", "name": "字段a12", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }] }] },
        { "id": "63", "name": "字段b", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "66", "name": "ziduanb1", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }] },
        { "id": "67", "name": "字段c", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 },
        { "id": "68", "name": "字段D", "key": "", "value_type": "2", "tips": "", "order_id": null, "children": [{ "id": "69", "name": "字段D1", "key": "", "value_type": "2", "tips": "", "order_id": null, "display": 1 }] },
        ]
        
        Vue.component("item", {
            template: '#item-template',
            props: {
                model: Object,
                parent: String
            },
            data: function () {
                return {

                }
            }
        })

        var demo = new Vue({
            el: '#demo',
            data: {
                treeData: data,
            }
        })
    </script>
</body>

</html>

原文地址:https://www.cnblogs.com/MR-cui/p/8065262.html