1つのコンポーネントに対して複数のコンポーネントからデータを取得することは可能でしょうか??
実現したい内容としては、
component1
component2
component3
でそれぞれデータを取得し、そのデータ(list1,list2,list3)を元にCSVを作成するcomponent4を作りたいです。
そのために、component4内でcomponent1,2,3のデータにアクセスしたいと考えております。
調べると1対1のコンポーネント間のデータの受け渡しの記事が多く、1対複数で実現可能かご教授頂きたいです。
もし可能であればその用法の名称など教えて頂ければ幸いです。よろしくお願いします。
1コンポーネントでまとめました。ご回答者様へのご報告用 <template> <div class="col-sm-2 col-form-label"> <h3>請選擇客戶名字</h3> <v-select id="sel1" v-model="tableSelected1" :on-change="fetchTags1()" :options="tables"> <option v-for="table in tables1" :key='table.id'>{{ table }}</option> </v-select> <ul v-if="errors && errors.length"> <li v-for="error of errors" :key='error.id'> {{error.message}} </li> </ul> <h2>請選擇標籤</h2> <v-select v-model="tagSelected1" :options="tags1"> <option v-for="tag in tags1" :key='tag.id'>{{ tag }}</option> </v-select> <ul v-if="errors && errors.length"> <li v-for="error of errors" :key='error.id'> {{error.message}} </li> </ul> <h3>請選擇客戶名字</h3> <v-select id="sel2" v-model="tableSelected2" :on-change="fetchTags2()" :options="tables"> <option v-for="table in tables" :key='table.id'>{{ table }}</option> </v-select> <ul v-if="errors && errors.length"> <li v-for="error of errors" :key='error.id'> {{error.message}} </li> </ul> <h2>請選擇標籤</h2> <v-select v-model="tagSelected2" :options="tags2"> <option v-for="tag in tags2" :key='tag.id'>{{ tag }}</option> </v-select> <ul v-if="errors && errors.length"> <li v-for="error of errors" :key='error.id'> {{error.message}} </li> </ul> <h3>請選擇客戶名字</h3> <v-select id="sel3" v-model="tableSelected3" :on-change="fetchTags3()" :options="tables"> <option v-for="table in tables" :key='table.id'>{{ table }}</option> </v-select> <ul v-if="errors && errors.length"> <li v-for="error of errors" :key='error.id'> {{error.message}} </li> </ul> <h2>請選擇標籤</h2> <v-select v-model="tagSelected3" :options="tags3"> <option v-for="tag in tags3" :key='tag.id'>{{ tag }}</option> </v-select> <ul v-if="errors && errors.length"> <li v-for="error of errors" :key='error.id'> {{error.message}} </li> </ul> <button id="btn" @click="creatCsv">確定</button> </div> </template> <script> import axios from 'axios' export default { data () { return { tables: '', tableSelected1: '', tags1: '', tagSelected1: '', tableSelected2: '', tags2: '', tagSelected2: '', tableSelected3: '', tags3: '', tagSelected3: '' } }, created () { axios.get('API1').then(response => { this.tables = response.data }) .catch(e => { this.errors.push(e) }) }, methods: { fetchTags1: function () { axios.get('API2', { params: { tableName: this.tableSelected1 }, }).then(response => { this.tags1 = response.data }) .catch(e => { this.errors.push(e) }) }, fetchTags2: function () { axios.get('API2', { params: { tableName: this.tableSelected2 }, }).then(response => { this.tags2 = response.data }) .catch(e => { this.errors.push(e) }) }, fetchTags3: function () { axios.get('API2', { params: { tableName: this.tableSelected3 }, }).then(response => { this.tags3 = response.data }) .catch(e => { this.errors.push(e) }) }, creatCsv: function () { alert(this.tagSelected1); } } } </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/07 02:25