現在、Vue.jsのコンポーネントの機能を使って開発しています。
そこで、一部可能であれば同じコンポーネント内で複数の関数を呼びたいのですが、技術的に可能かどうかご教授願いたいです。
現在作成中の機能は以下です。
①セレクトボックス1でfunc1を発火させAPI1からリストを取得し、表示
②①の選択地を引数とし、API2を呼び出し、結果をセレクトボックス2に表示←ここまで実装済み
③②の選択値によって別の関数を発火
この中でセレクトボックス1ではAPIからデータを取得するfetchTags関数を既にmethods内で呼び出しているのですが、その他に同じmethods内でセレクトボックス2で特定の要素を選択した際にif分岐で別の関数を設置してAPIを呼ぼうと考えてます。
ですが、methods内に複数の関数を混在させる方法が見つからず、セレクトボックス1と2をそれぞれ別のコンポーネントとして作成する必要性を考えています。もし、同じコンポーネント内で複数の関数の呼び出しが技術的に可能な場合、そのVue.jsの記法などヒントを頂ければ幸いです。
<template> <div class="col-sm-2 col-form-label"> <h3>請選擇客戶名字</h3> <v-select v-model="tableSelected" :on-change="fetchTags()" :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="tagSelected" :options="tags" multiple> <option v-for="tag in tags" :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> </div> </template> <script> import axios from 'axios' import qs from 'qs'; export default { data () { return { tables: '', tableSelected: '', tags: '', tagSelected: '' } }, created () { axios.get('API1').then(response => { this.tables = response.data }) .catch(e => { this.errors.push(e) }) }, methods: { fetchTags: function () { axios.get('API2', { params: { tableName: this.tableSelected }, paramsSerializer: (params) => { return qs.stringify(params, { arrayFormat: 'repeat' }); } }).then(response => { this.tags = response.data }) .catch(e => { this.errors.push(e) }) } } } </script>
ご質問拝見いたしました。
セレクトボックス1というのは以下の記述箇所になりますでしょうか?(ソース上は下方にあるv-select)
<v-select v-model="tagSelected" :options="tags" multiple>
すみません。
分かりにくかったと思います。
セレクトボックス1は<v-select v-model="tableSelected" :on-change="fetchTags()" :options="tables">
こちらのテーブル名を取得している物になります。
見て頂いてる<v-select v-model="tagSelected" :options="tags" multiple>の方はセレクトボックス2と称していて、こちらにで関数を発火させたいと思っています。
ご回答いただきありがとうございます!
セレクトボックス2にセレクトボックス1と同じようにon-changeを付与して、セレクトボックス1とは別な関数を呼び出したいという認識でよろしいでしょうか?
再度日本語チェックします
すみません。前提として1コンポーネント1methodsだと思っておりまして、既にmethodsはfetchTagsの処理が入っていり、セレクトボックス2の処理を加えられるかどうか悩んでおります。
すみません!methods内で複数の処理を実行できるかがより適切な内容なので、質問文を訂正いたしました!
回答1件
あなたの回答
tips
プレビュー