【问题标题】:VueJS - nested accordion based on JSON responseVueJS - 基于 JSON 响应的嵌套手风琴
【发布时间】:2021-07-21 10:16:14
【问题描述】:

在基于JSON响应的vuejs组件逻辑下面使用。

我对这个 VueJS 框架非常陌生。根据我下面的代码,第一级 JSON 响应值呈现良好。但是,

  1. 嵌套手风琴不起作用 --> 在“值”数组中。
  2. 嵌套手风琴仅在每个项目都存在“值”数组时才需要显示。否则隐藏嵌套。 3

{
    "filters":[
       {          
        "title":"itemcategory",
          "items":[
             {
                "label":"Modular Item",
                "value":"material",
                "count":1,
                "type":"accordion"
             }
          ]
       },
       {
       "title":"itemelements",
          "items":[
             {
                "label":"Item 1",
                "value":"item1",
                "count":2,
                "type":"accordion",
                "values":[
                   {
                      "label":"Item 1.1",
                      "value":"item1.1",
                      "count":1
                   }
                ]
             },
             {
                "label":"Item2",
                "value":"item2",
                "count":4,
                "type":"accordion",
                "values":[
                   {
                      "label":"Item 2.1",
                      "value":"item2.1",
                      "count":4
                   },
                   {
                      "label":"Item 2.2",
                      "value":"item2.2",
                      "count":3
                   }
                ]
             }
          ]
       }
    ]
}
.card-body
    template(v-for='item in items')
        .form-group.mb-0(v-if='item.type && item.type=="accordion"')
            .main-list--container
                .main-title.card-header(:id='"accordion-" + item.value')
                    h2.mb-0
                        button.btn.btn-link.no-padding(type='button' data-toggle='collapse', :data-target='"#test-" + item.value')
                            .form-group.mb-0
                                .Checkbox
                                    input.styled-checkbox(:id='"parent-" + item.value' type='checkbox', :value='"parent-" + item.value')
                                    div.Checkbox-visible
                                .checkbox-txt {{item.label}}
                                i.fa.fa-chevron-right     
                                             
                .collapse.test-module-listing(:id='"test-" + item.value', :aria-labelledby='"accordion-" + item.value')
                    .form-group
                        .Checkbox
                            input.styled-checkbox(:id='"child-" + item.value', type='checkbox', :value='"child-" + item.value')
                            .Checkbox-visible
                        .checkbox-txt.ss {{item.label}}
                        .filter-nos
                            .wrap {{item.count}}

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    只需在item.values 上使用嵌套的v-for,并有条件地使用v-if='item.values' 显示它:

    .card-body
        template(v-for='item in items')
            //...
    
            ul(v-if='item.values')
                li(v-for='subItem in item.values')
                    .wrap {{subItem.value}}
    

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多