2013-06-28 14:25题主

请教示例应用中的“Include Module”的问题。

若Include的Module需要查询大量数据时,那么通过将被包含的模块放置在主模块的initModule中,则主模块在加载时也会一并加载被包含模块,若被包含模块内的功能或者数据,在主模块中暂时没有用到时,则会造成效率浪费,请问如何实现延迟加载的效果。例如:单击主模块内的某个按钮后才真正加载需要的模块。
2013-06-28 21:10#1
include module好比引用一个js文件,module比引用js文件要更灵活和丰富,而且可使用服务器端功能
因此如果想实现你说的效果控制好方法就可,像单击某个按钮加载这个功能可以放在一个函数内,待需要时再调用
2013-06-29 23:03#2
想了另外一种实现方式:设置store和grid的autoLoad属性为false,然后再适时使用Wb.load(mystore)就达到延迟加载数据的效果了。不过又发现另外一个问题,由于tree没有autoLoad属性,即使同样设置了TreeStore的autoLoad为false,数据仍然被自动加载了显示在tree中。请问是否有其他办法?
2013-07-01 08:52#3
根节点expand为false就不自动加载了
2013-07-01 14:41#4
哦,这样啊,谢谢陈总
2013-07-16 21:57#5
请问,怎么实现按钮点击动态加载Module呢,感激不尽。
2013-07-17 09:51#6
有多种方法可以实现该功能:
1、点击按钮调用ajax发送参数moduleId,ajax指向的另一模块initModules中设置属性为{#moduleId#},createBody属性设置为false,如果模块含客户端脚本,即可通过ajax获取。
2、使用Parser类解析模块,参考simpleParse方法。
2013-07-17 11:20#7
感谢陈老师,基本采用的是第一种方法,createBody属性设置为false帮了我大忙。
2013-07-17 13:51#8
现在遇到了一个新的问题,比如我的主模块MainModule里面有一个Panel1面板,我希望加载一个SubModule到这个Panel1面板的位置,于是我在SubModule里面定义了一个Panel1面板,这个面板的id和主面板的面板id相同,可以正常加载,但是MainModule的最底下也会加载显示SubModule的内容。怎么解决呢?
2013-07-17 15:12#9
更正一下,是没有放到Panel1面板的位置,加载了一次没错,但是没有放到我希望的位置上。
2013-07-17 15:49#10
获取返回的脚本后,Wb.decode一下就变成一个对象了,这个对象可直接添加到panel上
在新版本中可使用方法Wb.toItemId把所有所属控件id转成itemId以防止id重复冲突
WebBuilder6.8版本所有控件提供autoCreate属性,以指定生成对象表达式或实例

返回开发者社区