首页 > 代码库 > 解决Easyui Combotree的SetValue方法无效
解决Easyui Combotree的SetValue方法无效
今天在写代码的时候,遇到个很奇怪的问题:
$(‘#department_parent‘).combotree(‘setValue‘, row.id);
AjaxForProvince(); $(‘#province‘).combobox(‘setValue‘, row.province_id); AjaxForCity(row.province_id); $(‘#city‘).combobox(‘setValue‘, row.city_id); AjaxForZone(row.city_id); $(‘#zone‘).combobox(‘setValue‘, row.zone_id); AjaxForDepartment(row.zone_id); $(‘#department_parent‘).combotree(‘setValue‘, row.id);
上面的逻辑很简单,就是想在页面上加载完省份,加载市县级,加载完市县级加载区域级,加载完区域级,加载部门。
但是问题是,当我点击的时候,省份,市县级,区域级都能正常加载,但是加载到combotree的时候,总是闪一下正确的值后,框就变空了。
当时也不知道什么问题,网上搜索也没看到别人遇到过这种情况。即便是尝试将row.id改成普通的数字,仍然不行。
既然没有前车之鉴,那只能自己分析了。
既然在加载的时候,combotree会正确加载下拉列表,说明AjaxForDepartment这个方法是调用成功的。
但是加载到setValue的时候,会闪一下没了。就说明问题出在这里。并且极有可能和加载顺序或者说加载时长有关。
为什么呢?
由于js执行是单线程,但是在combotree内部我们无法得知其执行顺序,所以极有可能是
$(‘#department_parent‘).combotree(‘setValue‘, row.id);
先行执行,而
AjaxForDepartment(row.zone_id);后续执行,这样就会造成上述问题。
抱着试试看的心态,更改代码如下:
AjaxForProvince(); $(‘#province‘).combobox(‘setValue‘, row.province_id); AjaxForCity(row.province_id); $(‘#city‘).combobox(‘setValue‘, row.city_id); AjaxForZone(row.city_id); $(‘#zone‘).combobox(‘setValue‘, row.zone_id); AjaxForDepartment(row.zone_id); setTimeout(function () { setTreeValue(row) }, 300); var setTreeValue = http://www.mamicode.com/function (row) {>
然后运行,一切正常。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。