【发布时间】:2017-02-20 08:04:10
【问题描述】:
我对 Vuejs 很陌生,所以如果这很常见,请原谅我。但我试图根据项目名称是否等于另一个对象的条件来设置项目的样式。
<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>
这给了我一个错误:
Vue 模板语法错误:
- 无效的表达式:v-bind:class="{activeSubMenuItem === menu.name?activeSubMenuItemStyle:subMenuItemStyle}"
如何根据属性为列表中的项目设置样式?
更新:
也试过这种方式:
<li v-for="menu in SubMenuItems" v-bind:class="[activeSubMenuItem === menu.name? activeSubMenuItemStyle:subMenuItemStyle]">{{menu.name}}</li>
并将activeSubMenuItemStyle 和subMenuItemStyle 添加到带有样式属性的数据中。
这没有给出任何错误,但该项目没有样式
【问题讨论】:
-
你没有样式,因为你的 CSS 没有被读取,它可能与你的构建过程有关。从模板文件中删除 CSS 并将其设为全局。