码迷,mamicode.com
首页 > 其他好文 > 详细

解决Easyui Combotree的SetValue方法无效

时间:2014-08-11 17:10:22      阅读:2021      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   for   ar   art   问题   cti   

今天在写代码的时候,遇到个很奇怪的问题:

$(‘#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 = function (row) {
         $(‘#department_parent‘).combotree(‘setValue‘, row.id);
     }

然后运行,一切正常。

解决Easyui Combotree的SetValue方法无效,布布扣,bubuko.com

解决Easyui Combotree的SetValue方法无效

标签:style   http   io   for   ar   art   问题   cti   

原文地址:http://www.cnblogs.com/scy251147/p/3904870.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!