javascript - vuetify treeview every objects was opened, but i did not set "open-all" option - Stack Overflow

i'm setting up vuetify's treeview ponent for my project.i clicked treeview's folder obj

i'm setting up vuetify's treeview ponent for my project. i clicked treeview's folder objects, every objects opened. but i did not set 'open-all' option.

my project is based vue cli 3 and my ESLint configs is 'airbnb'.

TEMPLATE :

        <v-card class="mx-auto">
          <v-sheet class="pa-1 tree__resources lighten-2">
            <v-treeview
              :active.sync="active"
              :open.sync="open"
              :items="items"
              item-key="id"
              activatable
              active-class="primary--text"
              open-on-click
              return-object>
              <template v-slot:prepend="{ item, open }">
                <v-icon v-if="item.type == 'directory'">
                  {{ open ? 'mdi-folder-open' : 'mdi-folder' }}
                </v-icon>
                <v-icon v-else>
                  {{ files[item.type] }}
                </v-icon>
              </template>
            </v-treeview>
          </v-sheet>
        </v-card>  

Scripts :

export default {
  data: () => ({
    active: [],
    open: [],
    items: ["JSON DATA"],
    files: {
      html: 'mdi-language-html5',
      js: 'mdi-nodejs',
      json: 'mdi-json',
      md: 'mdi-markdown',
      pdf: 'mdi-file-pdf',
      png: 'mdi-file-image',
      txt: 'mdi-file-document-outline',
      jpg: 'mdi-file-image',
      jpeg: 'mdi-file-image',
      gif: 'mdi-file-image',
      arsc: 'mdi-file-document',
      RSA: 'mdi-key-variant',
      SF: 'mdi-file-document',
      MF: 'mdi-file-document',
      xml: 'mdi-file-xml',
      dex: 'mdi-android',
      java: 'mdi-code-braces',
      kt: 'mdi-android',
      css: 'mdi-language-css3',
      android: 'mdi-android',
      properties: 'mdi-file-document',
      version: 'mdi-file-document',
      so: 'mdi-file-document',
      provider: 'mdi-file-document',
      providers: 'mdi-file-document',
    },
    filename: '',
    filepath: '',
    filetype: '',
  },
}),
puted: {
    selected() {
      if( !this.active.length ) return undefined;

      const selected = this.active[0];

      console.log(selected);
    },
  },
  methods: {
.
.
.

JSON DATA SAMPLE :

[
   {
      "name":"sources",
      "type":"directory",
      "children":[
         {
            "name":"android",
            "type":"directory",
            "children":[
               {
                  "name":"support",
                  "type":"directory",
                  "children":[
                    {
                      "name":"fragment",
                      "type":"directory",
                      "children":[
                          {
                            "name":"R.java",
                            "id":662,
                            "type":"java",
                            "path":"sources/android/support/fragment/R.java"
                          },
                          {
                            "name":"BuildConfig.java",
                            "id":663,
                            "type":"java",
                            "path":"sources/android/support/fragment/BuildConfig.java"
                          }
                      ]
                     },
                     {
                        "name":"mediapat",
                        "type":"directory",
                        "children":[
                           {
                              "name":"R.java",
                              "id":664,
                              "type":"java",
                              "path":"sources/android/support/mediapat/R.java"
                           },
                           {
                              "name":"BuildConfig.java",
                              "id":665,
                              "type":"java",
                              "path":"sources/android/support/mediapat/BuildConfig.java"
                           }
                        ]
                     }
                  ]
               }
            ]
         },
         {
            "name":"ntouch",
            "type":"directory",
            "children":[
               {
                  "name":"ntouch_apk_01",
                  "type":"directory",
                  "children":[
                     {
                        "name":"R.java",
                        "id":666,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/R.java"
                     },
                     {
                        "name":"BuildConfig.java",
                        "id":667,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/BuildConfig.java"
                     },
                     {
                        "name":"Ntouch_apk_01.java",
                        "id":668,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/Ntouch_apk_01.java"
                     },
                     {
                        "name":"SendDateToServer.java",
                        "id":669,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/SendDateToServer.java"
                     }
                  ]
               }
            ]
         }
      ]
   },
   {
      "name":"resources",
      "type":"directory",
      "children":[
         {
            "name":"META-INF",
            "type":"directory",
            "children":[
               {
                  "name":"MANIFEST.MF",
                  "id":670,
                  "type":"MF",
                  "path":"resources/META-INF/MANIFEST.MF"
               },
               {
                  "name":"CERT.RSA",
                  "id":671,
                  "type":"RSA",
                  "path":"resources/META-INF/CERT.RSA"
               },
               {
                  "name":"CERT.SF",
                  "id":672,
                  "type":"SF",
                  "path":"resources/META-INF/CERT.SF"
               }
            ]
         },
         {
            "name":"classes.dex",
            "id":673,
            "type":"dex",
            "path":"resources/classes.dex"
         },
         {
            "name":"AndroidManifest.xml",
            "id":674,
            "type":"xml",
            "path":"resources/AndroidManifest.xml"
         },
      ]
   }
]

when i clicked "resources" folder object, expect the output this:

but the actual output this: EVERYTHING OPEN IMMEDIATELY

i'm setting up vuetify's treeview ponent for my project. i clicked treeview's folder objects, every objects opened. but i did not set 'open-all' option.

my project is based vue cli 3 and my ESLint configs is 'airbnb'.

TEMPLATE :

        <v-card class="mx-auto">
          <v-sheet class="pa-1 tree__resources lighten-2">
            <v-treeview
              :active.sync="active"
              :open.sync="open"
              :items="items"
              item-key="id"
              activatable
              active-class="primary--text"
              open-on-click
              return-object>
              <template v-slot:prepend="{ item, open }">
                <v-icon v-if="item.type == 'directory'">
                  {{ open ? 'mdi-folder-open' : 'mdi-folder' }}
                </v-icon>
                <v-icon v-else>
                  {{ files[item.type] }}
                </v-icon>
              </template>
            </v-treeview>
          </v-sheet>
        </v-card>  

Scripts :

export default {
  data: () => ({
    active: [],
    open: [],
    items: ["JSON DATA"],
    files: {
      html: 'mdi-language-html5',
      js: 'mdi-nodejs',
      json: 'mdi-json',
      md: 'mdi-markdown',
      pdf: 'mdi-file-pdf',
      png: 'mdi-file-image',
      txt: 'mdi-file-document-outline',
      jpg: 'mdi-file-image',
      jpeg: 'mdi-file-image',
      gif: 'mdi-file-image',
      arsc: 'mdi-file-document',
      RSA: 'mdi-key-variant',
      SF: 'mdi-file-document',
      MF: 'mdi-file-document',
      xml: 'mdi-file-xml',
      dex: 'mdi-android',
      java: 'mdi-code-braces',
      kt: 'mdi-android',
      css: 'mdi-language-css3',
      android: 'mdi-android',
      properties: 'mdi-file-document',
      version: 'mdi-file-document',
      so: 'mdi-file-document',
      provider: 'mdi-file-document',
      providers: 'mdi-file-document',
    },
    filename: '',
    filepath: '',
    filetype: '',
  },
}),
puted: {
    selected() {
      if( !this.active.length ) return undefined;

      const selected = this.active[0];

      console.log(selected);
    },
  },
  methods: {
.
.
.

JSON DATA SAMPLE :

[
   {
      "name":"sources",
      "type":"directory",
      "children":[
         {
            "name":"android",
            "type":"directory",
            "children":[
               {
                  "name":"support",
                  "type":"directory",
                  "children":[
                    {
                      "name":"fragment",
                      "type":"directory",
                      "children":[
                          {
                            "name":"R.java",
                            "id":662,
                            "type":"java",
                            "path":"sources/android/support/fragment/R.java"
                          },
                          {
                            "name":"BuildConfig.java",
                            "id":663,
                            "type":"java",
                            "path":"sources/android/support/fragment/BuildConfig.java"
                          }
                      ]
                     },
                     {
                        "name":"mediapat",
                        "type":"directory",
                        "children":[
                           {
                              "name":"R.java",
                              "id":664,
                              "type":"java",
                              "path":"sources/android/support/mediapat/R.java"
                           },
                           {
                              "name":"BuildConfig.java",
                              "id":665,
                              "type":"java",
                              "path":"sources/android/support/mediapat/BuildConfig.java"
                           }
                        ]
                     }
                  ]
               }
            ]
         },
         {
            "name":"ntouch",
            "type":"directory",
            "children":[
               {
                  "name":"ntouch_apk_01",
                  "type":"directory",
                  "children":[
                     {
                        "name":"R.java",
                        "id":666,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/R.java"
                     },
                     {
                        "name":"BuildConfig.java",
                        "id":667,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/BuildConfig.java"
                     },
                     {
                        "name":"Ntouch_apk_01.java",
                        "id":668,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/Ntouch_apk_01.java"
                     },
                     {
                        "name":"SendDateToServer.java",
                        "id":669,
                        "type":"java",
                        "path":"sources/ntouch/ntouch_apk_01/SendDateToServer.java"
                     }
                  ]
               }
            ]
         }
      ]
   },
   {
      "name":"resources",
      "type":"directory",
      "children":[
         {
            "name":"META-INF",
            "type":"directory",
            "children":[
               {
                  "name":"MANIFEST.MF",
                  "id":670,
                  "type":"MF",
                  "path":"resources/META-INF/MANIFEST.MF"
               },
               {
                  "name":"CERT.RSA",
                  "id":671,
                  "type":"RSA",
                  "path":"resources/META-INF/CERT.RSA"
               },
               {
                  "name":"CERT.SF",
                  "id":672,
                  "type":"SF",
                  "path":"resources/META-INF/CERT.SF"
               }
            ]
         },
         {
            "name":"classes.dex",
            "id":673,
            "type":"dex",
            "path":"resources/classes.dex"
         },
         {
            "name":"AndroidManifest.xml",
            "id":674,
            "type":"xml",
            "path":"resources/AndroidManifest.xml"
         },
      ]
   }
]

when i clicked "resources" folder object, expect the output this: https://imgur./OjU4hjx

but the actual output this: EVERYTHING OPEN IMMEDIATELY https://imgur./7ytQ3mX

Share asked Jun 26, 2019 at 2:34 CHE5YACHE5YA 211 silver badge4 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 5

Your item-key is id, which is undefined in some node. You should have id for each node includes parent node, something like:

[
   {
      "name":"sources",
      "id": 1,
      "type":"directory",
      "children":[
         {
            "name":"android",
            "id": 2
            "type":"directory",
            "children":[]
         }
        ....
   }
]   

or change item-key to name. I expected name is unique in your structure (which might not be possible)

           <v-treeview
              :active.sync="active"
              :open.sync="open"
              :items="items"
              item-key="name"
              activatable
              active-class="primary--text"
              open-on-click
              return-object>
              <template v-slot:prepend="{ item, open }">
                <v-icon v-if="item.type == 'directory'">
                  {{ open ? 'mdi-folder-open' : 'mdi-folder' }}
                </v-icon>
                <v-icon v-else>
                  {{ files[item.type] }}
                </v-icon>
              </template>
            </v-treeview>

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744819947a4595553.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信