语法坑注意点:
a:if :
原代码:
<view a:if="workList.length===0 && !loading">暂无工单数据</view>
钉钉小程序 a:if 语法坑
正确写法:{``{ workList.length === 0 && !loading }}
错误写法:不带 {``{ }},表达式不会执行,直接判定永远为 true,所以一直显示文字。
第一步:修改 workList.axml
找到底部暂无数据那一行,改成:
<view a:if="{{workList.length === 0 && !loading}}">暂无工单数据</view>
第二步:排查兜底校验(如果上面改完还不行)
在请求成功回调 console.log("最终渲染workList:", this.data.workList)
if (result.code === 200) {
const rows = result.rows || [];
const total = result.total || 0;
let oldList = this.data.workList;
const newList = refresh ? rows : [...oldList, ...rows];
console.log("赋值前newList",newList); //打印查看数组长度
this.setData({
workList: newList,
total: total,
pageNum: page
},()=>{
console.log("setData完成 workList长度",this.data.workList.length)
});
}
正常:数组长度 = 1 →
{``{workList.length ===0}}结果 false,"暂无工单" 隐藏。
第三步:展开箭头样式微调(匹配截图 UI)
.arrow-right {
transform: rotate(0deg);
}
.arrow-down {
transform: rotate(90deg);
}
遇到这种情况,优先执行第一条改动,很大概率就是 a:if 缺少双大括号造成永久显示暂无数据。
改完保存,重新预览页面测试。