Reputation: 973
I want have displayed flag adjacent to the language in language dropdown. The code is like this :
<b-dropdown-item v-for="language in availableLanguages" :key="language.name" :value="language.code">
<div class="d-flex">
<flag :iso="language.code"/>
<span>{{language.name}}</span>
</div>
</b-dropdown-item>
The flags are not coming for english and danish. The problem being, for english the language.code is en and the flag is the code - gr. Can we get any workaround for this without changing the api response coming from backend ?
Upvotes: 1
Views: 3750
Reputation: 10414
add a ternary inline where you've defined :iso=
You've used https://github.com/vikkio88/vue-flag-icon, so was able to find the country codes for uk and denmark.
You can use an inline ternary or
You can define a method
to return the appropriate flag code
inline ternary
<b-dropdown-item v-for="language in availableLanguages" :key="language.name" :value="language.code">
<div class="d-flex">
<flag :iso="language.code === 'en' ? 'gb' : language.code === 'da' ? 'dk' : language.code"/>
<span>{{language.name}}</span>
</div>
</b-dropdown-item>
method
<b-dropdown-item v-for="language in availableLanguages" :key="language.name" :value="language.code">
<div class="d-flex">
<flag :iso="flagCode(language.code)"/>
<span>{{language.name}}</span>
</div>
</b-dropdown-item>
// <script>
method: {
flagCode: (code) {
return code === 'en' ? 'gb' : code === 'da' ? 'dk' : language.code;
}
}
Upvotes: 2