关于javascript使用分享2--控件监听器的问题
关于javascript使用经验分享2--控件监听器的问题:在实际开发中,总会遇到很多问题,解决办法也有很多种,但在开辟的第一种的时候,总有那么一点辛苦和耗时,所以分享一下,大家共享!
操作方法
- 01
原因产生:使用echarts进行数据统计图设计,最开始是使用前端独立使用的,不连接数据库数据的统计,结果出来以后,开始连接数据库使用,连接数据库以后原因出来了由于楼上5连接数据库以后数据到前台以后都是数据集,如下是配置的数据集: 然后在显示统计的地方加入了监听器: 这就是配置的监听器,监听器的左右就是让每一次点击panel面板的时候自动显示以及首次加载页面时显示统计图,其中renderxclb是一个javascript方法,如下: 上图即为监听器执行的事件方法,图片中下面一个方法为统计需要的数据源的获得,下面开始产生问题了:首先加载以后数据源获取的数据时页面中的model:dataset配置的,页面没有加载完时是没有数据的,因此renderlb_XM是不到数据的,可是监听器是需要在页面加载的时候就会调用所需要的方法,问题出来了:问题就是监听器需要页面加载时掉方法,掉方法就意味着取数据,可是页面没有加载完根本就没有数据。下面开始解决问题
- 02
尝试方案1:将页面中的监听器取消,在页面加载完以后执行的init方法中手动给指定的panel设置监听器: 此init方法就是再页面加载完以后执行(这是楼上5框架自带的,不需要了解为什么,就想jQuery的render方法一样),在此给指定的panel设置监听器,结果无效原因为init方法执行的时候已经结束了,监听器无法加载上去,页面就没有数据也就没有统计;
- 03
尝试方案2:先来看看页面结构 此中有多个panel在tabpanel中,每一个皆有一个监听器,默认显示第一个,第二种方案就是把第一个监听器取消,让页面通过,然后在init方法中执行调用统计结果显示的方法。结果:其他的panel皆可成功执行,但第一个首次会达到效果,但后面再回来的时候就无效了!至此就尝试了第三种方案出来了:
- 04
尝试方案3:新增一个空的panell: 在此处新增了一个id为hiddenpanel的空panel,不执行任何操作,目的是为了页面正常通过,开始的目标是为了在此添加空panel,在init方法中将其隐藏,但是无效,后来就直接在init方法中显示id为lbtjpanel的panel,就是我们需要默认显示那个panel,结果成功执行了,至此问题已解决!
- 05
总结:解决问题的办法可能有些不太好,也可能有其他办法,但这也总算是一种办法!希望对大家有帮助!本处使用的为项目开发中的实际经验分享,在此更多应该是提供一种解决办法的思想