今天遇到一个很奇葩的问题,fastadmin后台tab页点击没有任何反应。检查了mvc各个环节的代码都和之前写的一样,可就是点击没反应,奇了怪了。
tab页的切换并带动页面数据刷新这个是js控制的,所以从js入手跟踪调试了点击后的代码。
主要涉及到 require_table.js 这个文件,关键字信息绑定TAB事件
。
原理就是点击tab相当于触发公共搜索表单自动提交。tab自动绑定一个status的状态栏字段。
但我查看自己的status字段时发现它的下表不是id,而是文字。这就奇怪了。
但找到了问题所在。研究发现,后台传过来的数组信息,如果是索引数组,而且是0开始的连续的下标。比如
[0=>a,1=>b,2=>c]
在js中我们希望是
{0=>a,1=>b,2=>c}
但实际上在js中变成了
[a,b,c]
遍历它的时候也只能拿到 a b c,而拿不到0 1 2,
除非打破这个以0开始的连续下标,比如
[0=>a,1=>b,-2=>c]
或
[1=>a,2=>b,3=>c]
看来还是用非0值作为状态字段比较好。