CSS模板语法修复总结

🐛 修复的问题

1. :class中的方法调用语法错误

问题 :uni-app不支持在:class中直接调用方法

复制代码
<!-- ❌ 错误写法 -->
:class="getEfficiencyClass(peak.efficiency)"

解决方案:使用条件对象语法

复制代码
<!-- ✅ 正确写法 -->
:class="{
  'efficiency-excellent': peak.efficiency >= 90,
  'efficiency-good': peak.efficiency >= 80 && peak.efficiency < 90,
  'efficiency-normal': peak.efficiency >= 70 && peak.efficiency < 80,
  'efficiency-poor': peak.efficiency < 70
}"

2. 新能源车牌判断

问题:方法调用语法

复制代码
<!-- ❌ 错误写法 -->
:class="isNewEnergyPlate(item.plateNumber) ? 'green-plate' : 'blue-plate'"

解决方案:直接使用条件表达式

复制代码
<!-- ✅ 正确写法 -->
:class="item.plateNumber && item.plateNumber.length === 8 ? 'green-plate' : 'blue-plate'"

3. 紧急程度类名

问题:字符串拼接语法

复制代码
<!-- ❌ 错误写法 -->
:class="'urgency-' + getWaitingUrgencyLevel(item.recordTime)"

解决方案:使用方法返回完整类名

复制代码
<!-- ✅ 正确写法 -->
:class="getUrgencyClass(item.recordTime)"

对应的方法:

复制代码
getUrgencyClass(recordTime) {
  const urgencyLevel = this.getWaitingUrgencyLevel(recordTime);
  return `urgency-${urgencyLevel}`;
}

📝 修复清单

✅ 已修复的文件

  • pages/site/facility.vue

✅ 修复的语法问题

  1. 效率等级类名:从方法调用改为条件对象
  1. 车牌颜色判断:从方法调用改为直接条件判断
  1. 紧急程度类名:从字符串拼接改为方法返回完整类名

✅ 移除的不必要方法

  • getEfficiencyClass() - 已用条件对象替代

✅ 新增的辅助方法

  • getUrgencyClass() - 返回完整的紧急程度类名

🎯 uni-app模板语法最佳实践

1. :class绑定推荐写法

条件类名:

复制代码
:class="{ 'active': isActive, 'disabled': isDisabled }"

三元表达式:

复制代码
:class="condition ? 'class-a' : 'class-b'"

数组语法:

复制代码
:class="[baseClass, { 'active': isActive }]"

2. 避免的写法

❌ 不要在模板中调用复杂方法:

复制代码
:class="getComplexClassName(param1, param2)"

❌ 不要使用字符串拼接:

复制代码
:class="'prefix-' + dynamicValue"

❌ 不要使用复杂的计算:

复制代码
:class="items.filter(item => item.active).length > 0 ? 'has-active' : ''"

3. 推荐的替代方案

✅ 使用计算属性:

复制代码
computed: {
  complexClassName() {
    return this.getComplexClassName(this.param1, this.param2);
  }
}

✅ 使用简单方法返回完整类名:

复制代码
methods: {
  getStatusClass(status) {
    return `status-${status}`;
  }
}

✅ 使用条件对象:

复制代码
:class="{
  'status-active': item.status === 'active',
  'status-pending': item.status === 'pending',
  'status-disabled': item.status === 'disabled'
}"
相关推荐
啾咪orJIUMI1 分钟前
Vue 3 + 高德地图封装实战:点位、区域、Loca 流光与 Vue 信息窗体
前端·vue.js
掘金者阿豪4 分钟前
AI数据库不只是向量检索:从数据语义到库内智能计算的技术演进
前端
梦里寻码7 分钟前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
FRing039 分钟前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
Decay__16 分钟前
14_MySQL 高可用与容灾架构 —— MGR / InnoDB Cluster / Keepalived+VIP / 双主 / 读写分离 / 两地三中心
运维·数据库·sql·mysql·架构
SL_staff18 分钟前
离散制造排程破局:JVS-APS 四步闭环落地实践(开发者视角)
java·产品·全栈
SameX19 分钟前
HarmonyOS ArkUI Dialog 复用 用 @CustomDialog + enum type 做多类型统一管理的做法
前端
freejackman24 分钟前
【实战三】撕开脱敏盲区:深度解析 CASE WHEN 与窗口函数血缘
大数据·数据库·sql
这个昵称不容易29 分钟前
SpringBoot 美容院管理系统:232个Java文件315个接口,5套角色从预约到发货一整条链路
java·springboot·毕设
AiMan35 分钟前
豆包爱学还是不可以导出左侧所有对话,只能单容导出,方法不对吗
前端