在2020年11月24日 pearadmin模板更新之后,我就更新了自己用的模板。但是在前端渲染的时候出现错误,导致纠结了一天时间。最后还是在 就眠仪式 的帮助下排除了错误。
下面是错误原因及排除
在index.html中,原pear.config.json中关于默认样式的代码如下
"theme": {
"defaultColor": "2",
"defaultMenu": "dark-theme",
"allowCustom": true
},
"colors": [{
"id": "1",
"color": "#FF5722"
},
{
"id": "2",
"color": "#5FB878"
},
{
"id": "3",
"color": "#1E9FFF"
}, {
"id": "4",
"color": "#FFB800"
}, {
"id": "5",
"color": "darkgray"
}
],
而我的PHP输出代码是
$data['theme']['defaultColor']='2';
$data['theme']['defaultMenu']="dark-theme";
$data['theme']['allowCustom']=true;
$data['colors'][0]=array('id'=>1,'color'=>"#FF5722");
$data['colors'][1]=array('id'=>2,'color'=>"#5FB878");
$data['colors'][2]=array('id'=>3,'color'=>"#1E9FFF");
$data['colors'][3]=array('id'=>4,'color'=>"#FFB800");
$data['colors'][4]=array('id'=>5,'color'=>"darkgray");
上面是原来输出json的代码
二者对比如下:

经过 就眠仪式 的分析发现 colors 的差异(第28行开始),我输出的json中colors元素中的id是数字(number),而原来json中colors元素中的id是字符(string)
在admin.js中364的getColorById(id)函数中,使用的是===,因为value.id和id类型不一样,所以没有符合条件的数据赋值给color,从而导致color变成 undefined

解决办法:将php代码中的
$data['colors'][0]=array('id'=>1,'color'=>"#FF5722");
修改为
$data['colors'][0]=array('id'=>'1','color'=>"#FF5722");
(将id的值有数字改为字符)
非常感谢 就眠仪式的帮助。强烈推荐 就眠仪式的开源项目 https://gitee.com/pear-admin/Pear-Admin-Layui
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69992267/viewspace-2746678/ ,如需转载,请注明出处,否则将追究法律责任。