JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<div id="app">
<select v-model="input.folder" id="pid">
<option :value="null">請選擇</option>
<option v-for="(item, j) in parentList.sort"
:key="j">
{{ item }}
</option>
</select>
<select v-model="input.scan" >
<option :value="null">請選擇</option>
<option v-for="(item, j) in childrenList.sort"
:key="j">
{{ item }}
</option>
</select>
<select v-model="input.host" @change="Submit">
<option :value="null">請選擇</option>
<option v-for="(item, j) in grandsonList.sort"
:key="j">
{{ item }}
</option>
</select>
</div>
JavaScript
const folderdata1 = [
{ folderid: 27, foldername: 'A', scanid: 28, scanName: 'apple' ,hostid:1,hostname:'applepie'},
{ folderid: 4588, foldername: 'B', scanid: 4732, scanName: 'Black', hostid:2,hostname:'BlackCoffee'},
{ folderid: 4588, foldername: 'B', scanid: 4732, scanName: 'Black', hostid:8,hostname:'BlackMan'},
{ folderid: 4588, foldername: 'B', scanid: 4665, scanName: 'Blue' , hostid:3,hostname:'BlueBird'},
{ folderid: 4588, foldername: 'B', scanid: 4665, scanName: 'Blue' , hostid:4,hostname:'BlueSky'},
{ folderid: 4588, foldername: 'B', scanid: 4665, scanName: 'Blue' , hostid:5,hostname:'BlueTears'},
]
new Vue({
el: '#app',
data() {
return {
host: [],
input: {
folder: null,
scan: null,
host:null,
},
folders: [],
}
},
created() {
this.folders = folderdata1 //之後要接的選單資料
},
computed: {
parentList() {
let obj = {
sort: [],
map: {}
}
this.folders.forEach(({ folderid, foldername, scanid, scanName,hostid,hostname }, index) => {
if (!obj.map[foldername]) {
obj.sort.push(foldername)
// mapObj建立一個foldername 的屬性,值是 sort,map
obj.map[foldername] = {
sort: [],
map: {},
}
}
if(!obj.map[foldername].map[scanName]){
obj.map[foldername].sort.push(scanName)
obj.map[foldername].map[scanName] = {...