I am very new to Vuejs, so please pardon me if this is something very common. But I am trying to style an item based on the condition of whether the name of the item is equal to another object.
<template>
<div id="subMenuWrapper">
<ul id="subMenuList">
<li v-for="menu in SubMenuItems" v-bind:class="{activeSubMenuItem === menu.name? activeSubMenuItemStyle:subMenuItemStyle}">{{menu.name}}</li>
</ul>
</div>
</template>
<script>
export default {
name: 'subMenuWrapper',
data() {
return {
SubMenuItems: [
{
name: 'IN THEATERS',
},
{
name: 'COMING SOON',
},
],
activeSubMenuItem: 'IN THEATERS',
}
},
}
</script>
<style>
.activeSubMenuItemStyle {
font-weight: bold;
color: #e4bb23;
padding: 8px 0;
}
.subMenuItemStyle {
font-weight: bold;
color: #e4bb23;
padding: 8px 0;
}
</style>
This is giving me an error:
Vue template syntax error:
- invalid expression: v-bind:class="{activeSubMenuItem === menu.name? activeSubMenuItemStyle:subMenuItemStyle}"
How can I style an item in a list based on its properties?
Update:
Tried this way too:
<li v-for="menu in SubMenuItems" v-bind:class="[activeSubMenuItem === menu.name? activeSubMenuItemStyle:subMenuItemStyle]">{{menu.name}}</li>
and added the activeSubMenuItemStyle and subMenuItemStyle into the data with style properties.
This is not giving any errors, but the item has no styles