代码之家  ›  专栏  ›  技术社区  ›  Vithushan

折叠/展开角度6中的嵌套div

  •  0
  • Vithushan  · 技术社区  · 8 年前

    enter image description here

    我想要的是,加载时,只应显示第1级(所有场馆)和点击场馆时,其直接子应显示等等。有什么办法吗。我的html是:

    <div class="div-table">
        <div class="div-table-row">
            <div class="div-header-col" style="visibility: hidden;">A</div>
            <div *ngFor="let date of dates" class="div-date-col">{{date | date:'d E'}}</div>
        </div>
    
    
        <!-- level1 -->
        <div *ngFor="let venue of venues" class="level1" style="color: red">
            <div class="div-table-row-level1" >
                <div class="div-header-col">{{venue.name}}</div>
                <div *ngFor="let x of dates" class="div-event-level1-col"></div>
            </div>
    
            <!-- level2 -->
            <div *ngFor="let category of venue.categories" class="level2" style="color: blue">
                <div class="div-table-row-level2">
                    <div class="div-header-col" style="padding-left: 10px">{{category.name}}</div>
                    <div *ngFor="let x of dates" class="div-event-level2-col"></div>
                </div>
    
                <!-- level3 -->
                <div *ngFor="let asset of category.assets" class="level3" style="color: green">
                    <div class="div-table-row-level3">
                        <div class="div-header-col" style="padding-left: 20px">{{asset.name}}</div>
                        <div *ngFor="let x of dates" class="div-event-level3-col assest-hover" "></div>
                    </div>
                </div>
    
            </div>
        </div>
    </div>
    

    我的表(div)数据是:

    [  
       {  
          "id":1,
          "name":"venue1",
          "categories":[  
             {  
                "id":1,
                "name":"cat1",
                "assets":[  
                   {  
                      "id":1,
                      "name":"assest1"
                   },
                   {  
                      "id":2,
                      "name":"assest2"
                   }
                ]
             },
             {  
                "id":2,
                "name":"cat2",
                "assets":[  
                   {  
                      "id":3,
                      "name":"assest3"
                   },
                   {  
                      "id":4,
                      "name":"assest4"
                   }
                ]
             }
          ]
       },
       {  
          "id":2,
          "name":"venue2",
          "categories":[  
             {  
                "id":3,
                "name":"cat3",
                "assets":[  
                   {  
                      "id":5,
                      "name":"assest5"
                   },
                   {  
                      "id":6,
                      "name":"assest6"
                   }
                ]
             },
             {  
                "id":4,
                "name":"cat4",
                "assets":[  
                   {  
                      "id":7,
                      "name":"assest7"
                   },
                   {  
                      "id":8,
                      "name":"assest8"
                   }
                ]
             }
          ]
       },{  
          "id":3,
          "name":"venue3",
          "categories":[  
             {  
                "id":5,
                "name":"cat5",
                "assets":[  
                   {  
                      "id":9,
                      "name":"assest9"
                   },
                   {  
                      "id":10,
                      "name":"assest10"
                   }
                ]
             },
             {  
                "id":6,
                "name":"cat6",
                "assets":[  
                   {  
                      "id":11,
                      "name":"assest11"
                   },
                   {  
                      "id":12,
                      "name":"assest12"
                   }
                ]
             }
          ]
       }
    ]
    
    2 回复  |  直到 8 年前
        1
  •  10
  •   Sunil Singh    8 年前

    如果您将整个数据加载到一起,那么您会得到一个好消息,它可以用一种非常简单的方式实现-

    你可以到处玩 Element Reference . 没有什么需要管理的 ts 文件。

    在html中

       <div *ngFor="let venue of venues" class="level1" style="color: red" 
          (click)="ele.class = ele.class == 'showChildren' ? '' :  'showChildren'"
      [ngClass]="{ hideChildren : ele.class !== 'showChildren' }">
    

    对所有人重复相同的步骤 parent div

    在CSS中

    .hideChildren>div{
       display: none;
    }
    

    这是工作副本- https://stackblitz.com/edit/angular-n43ihd

    如果数据是以异步方式获取的,还有更多的方法可以处理。然后这些逻辑会转移到 文件。

        2
  •  -2
  •   Wild_Owl    8 年前

    您可以尝试隐藏加载时的组件,并将其设置为visible onClick

    $scope.$on('$viewContentLoaded', function() {
        // Hide all unwanted div's here
    });