・クリックで該当のオブジェクトに関する情報だけが展開するtoggleを作成する

・全部のオブジェクトのトグルが一緒に開くような愚行は許さない

・クリックすると矢印のアイコンは逆向きになる

オブジェクト配列stocksを回す

<span v-for="stock in stocks" :key="stock.id">
    <a v-if="toggleSelected ==stock.id && toggle" v-b-toggle :href="'#example-collapse'+stock.id"
        @click.prevent @click="toggleClose(stock.id)">
        <font-awesome-icon class="toggle-link" :icon="['fa', 'angle-up']" />
    </a>
    <a v-if=" toggle==false ||toggleSelected !=stock.id  " v-b-toggle
        :href="'#example-collapse'+stock.id" @click.prevent @click="toggleOpen(stock.id)">
        <font-awesome-icon class="toggle-link" :icon="['fa', 'angle-down']" />
    </a>
</span>

font-awesomeのアイコンはいい感じに自分の環境に合わせて置き換えてくれ。

data() {
    return {
        stocks: null,//ここにオブジェクト配列を格納するAPIが別途必要
        toggle: false,
        toggleSelected: null,
    }
},
methods: {
    toggleClose(id) {
        this.toggle = false
        this.toggleSelected = id
    },
    toggleOpen(id) {
        console.log(id)
        this.toggle = true
        this.toggleSelected = id
    },
}

コード全体でいうと上記のような感じになる。

トグル閉じるボタンについて

<a v-if="toggleSelected ==stock.id && toggle" v-b-toggle :href="'#example-collapse'+stock.id"
        @click.prevent @click="toggleClose(stock.id)">
        <font-awesome-icon class="toggle-link" :icon="['fa', 'angle-up']" />
</a>

閉じている時は下向きの矢印が表示されている。

選択されたトグルにおけるID要素と同じIDがtoggleCloseメソッドに渡される

かつ

変数toggleがtrue

であれば、該当トグルだけを展開する。

そしてアイコンが逆向きの上向き矢印になる。

トグル展開ボタンについて

<a v-if=" toggle==false ||toggleSelected !=stock.id  " v-b-toggle
        :href="'#example-collapse'+stock.id" @click.prevent @click="toggleOpen(stock.id)">
        <font-awesome-icon class="toggle-link" :icon="['fa', 'angle-down']" />
</a>

開いている時は上向きの矢印が表示されている。

選択されたトグルにおけるID要素と同じIDがtoggleOpenメソッドに渡される

かつ

変数toggleがfalse

であれば、該当トグルだけを閉じる

BootstrapVue

無制限に質問可能なプログラミングスクール!

万が一転職できない場合は、転職保障全額返金できるコースもあり!!

無制限のメンター質問対応

 

DMMウェブキャンプでプログラミングを学習しませんか?

独学より成長スピードをブーストさせましょう!

 

まずは無料相談から!

おすすめの記事