Чтобы отобразить каждую вкладку с определенным значком, вы можете изменить модель данных, введя разные значки для каждой вкладки.Например, например:
tabs:[
{label: 'Tab1', icon:'smile'},
{label: 'Tab2', icon:'bullhorn'},
{label: 'Tab3', icon:'heart'}
]
Кроме того, вы должны изменить свой template
, связав CSS-класс i
соответственно.Для этого вы можете:
- ввести метод Vue, возвращающий правильный класс CSS, соответствующий классу FontAwesome, например:
methods: {
faClass(icon) {
return `fa fa-${icon}`;
}
}
вызовите этот новый метод в вашем
template
, например:
<i :class="[faClass(tab.icon)]" style="width:auto" aria-hidden="true">
Здесь вы можете увидеть, как class
теперь связан через само Vue.
Итак, возвращаясь к вашему примеру, вы получите:
HTML-шаблон
<div id='app'>
<ul class="nav nav-tabs" role="tablist">
<li v-for="(tab,index) in tabs" :class="{active : curentTab===index}"
@click="curentTab=index">
<a href="#">
<i :class="[faClass(tab.icon)]"
style="width:auto"
aria-hidden="true"></i> {{tab.label}}
</a></li>
</ul>
</div>
Vue instance
...
data: function() {
return {
curentTab:0,
tabs:[
{label: 'Tab1', icon:'smile'},
{label: 'Tab2', icon:'bullhorn'},
{label: 'Tab3', icon:'heart'}
]
}
},
methods: {
faClass(icon) {
return 'fa fa-'+icon;
}
}
...
Отметьте CodePen , чтобы увидеть его в действии.