ExtJS中findRecord方法的bug及规避方法
来源:互联网 发布:网络安全工程师 面经 编辑:程序博客网 时间:2024/04/30 10:18
今天客户反馈了一个问题,用户在配置菜单的是明明选择的是菜单1,显示的却是菜单2,而用这个用户登录系统后,系统的菜单却是没有问题的。
于是开始跟踪代码,通过debug发现,findRecord方法在实际比较的时候采用的是正则表达式,所以1和10其返回结果是相同的,这在使用id这个字段的时候会出现这种问题。那么如何修改呢,不应该修改源代码,因为这种比较在其它字符串字段上是没有问题的,所以为了快速处理问题,我们采用如下方法来解决,思路如下:
1、使用findRecord函数查到记录
2、判断此记录的id字段值是否和给定的条件相等,如果相等则继续原来的流程,否则3
3、使用each函数逐个判断,直到找出给定的记录;
这个方法好处如下:
1、原来的代码不用改动,只需要增加一个特殊处理;
2、效率稍微有所降低,但是没有增加太多系统复杂性,只是针对这个问题来特殊处理一下,性价比还是比较高的。
代码如下:
var store = Ext.StoreMgr.get('menuitemstore');
for(var i = 0, max = itemIds.length; i < max; i++){
var record = store.findRecord("id", itemIds[i]);
if(record !== null && record.get('id') !== parseInt(itemIds[i])){
record = null;
store.each(function(r){
if(r.get('id') === parseInt(itemIds[i])){
record = r;
}
})
}
var item = "";
if(record !== null){
item = record.get('name');
}
items = (items === null)? item:items+',' + item;
}
其中红颜色是新增的代码;
谨记之
- ExtJS中findRecord方法的bug及规避方法
- D200的新bug、原因及规避方法
- Java中20个常见的错误及规避方法
- 同源策略及规避方法
- Extjs findRecord find
- MFC 图像闪烁原理及规避方法
- Eclipse小缺陷及规避方法积累
- Eclipse小缺陷及规避方法积累
- EXTjs4.1 的store的findRecord的BUG.
- 7.规避脱离标准流的方法
- 多线程规避死锁方法
- linux下网络程序遭遇SIGPIPE信号进程退出的原因及规避方法
- 单点登录限制下暴露的新漏洞及规避方法
- Windows环境locale::_Getfacet崩溃原因及规避方法
- Redis禁用命令、危险命令及规避方法
- 大并发情况下,避免竞争数据库中同一个资源的规避方法
- Gson的bug及应对方法
- 存在的BUG及修改方法
- error:/usr/bin/ld:skipping incompatible ./libxxxx.so when searching for -lxxxx
- ftl转jsp格式
- C指针运算
- 【cocos2dx-3.0beta-制作flappybird】跟随时代的潮流,关于引擎升级
- STM32 DMA学习
- ExtJS中findRecord方法的bug及规避方法
- android错误之:android.content.res.Resources$NotFoundException: String resource ID #0x1
- uva 152 Tree's a Crowd(暴搜)
- EAS隐藏Table 上面的相关按钮:插入一行 新增一行 删除一行
- Android 计算字符串在屏幕上所占的长度和宽度(像素单位)
- linux命令--vi,vim
- ssh连接响应慢
- case 在where后面的用法
- Android应用性能优化之使用SparseArray替代HashMap