2019-02-28 18:26 | 题主 | ||||||||
|
在Wb的不同的tab page切换的触发的事件? 比如我打开了 数据库管理器 和 文件管理器 两个module,请问一下,我从 数据库管理器 tab,转到 文件管理器的tab的时候,触发了 文件管理器的什么事件?能否监听,并且相关的逻辑。背后的应用场景,我设计了很多的module,但这些module之间共享一个保存在cookie中的值,在某一个模块中 修改了这个cookie的值,希望其他的module 在重新获得焦点或active的时候,自动判断是否需要根据cookie中的值 重新load相关数据。 |
2019-02-28 18:53 | #1 | ||||||||
|
触发了 sys/portal/home.xwl中的tab的tabchange 问题转换为 如何 app.tab.getActiveTab() 之后,如何获取 该tab对应module里面的某一个函数的问题 |
2019-02-28 19:04 | #2 | ||||||||
|
从activetab的appScope中能看到相应的字段和定义,比如 方法 getTotalNumber, 但 直接调用 activetab.getTotalNumber undefined.... |
2019-02-28 19:24 | #3 | ||||||||
|
问题也可能转换为,如何给一个module定义 beforeactivate 目前在Wb设计中只有三个event: initialize, finalize 以及beforeunload() |
2019-03-01 10:21 | #4 | ||||||||
|
tab有beforeactivate事件 |
2019-03-01 14:00 | #5 | ||||||||
|
home.xwl里面的tab没看到beforeactivate 事件呢 |
2019-03-04 10:52 | #6 | ||||||||
|
tab下的card有beforeactive,或监听tab的change事件都可以 |
2019-03-05 08:45 | #7 | ||||||||
|
home.owl的change事件,可以监听到新打开的module,也可以调用 activetab.title获取标题,但是没找到如何调用新打开module里定义的函数 |
2019-03-05 10:45 | #8 | ||||||||
|
tab.appScope.yourFn() |
2019-03-05 18:55 | #9 | ||||||||
|
tab.appScope.yourFn() 我肯定试过,如果没记错的话,好像是undefined错误信息。 |
2019-03-05 19:32 | #10 | ||||||||
|
var tab = app.tab.getActiveTab(); Cs.info('#####################'); Cs.info(tab.title); Cs.info('##### tab.appScope.getProjectId'); if (tab.appScope.getProjectId) { //判断该模块中是否定义了 getProjectId函数 Cs.info(tab.appScope.getProjectId); Cs.info(tab.appScope.getProjectId()); //getProjectId() 是自定义的函数 } else { Cs.info('tab.appScope.getProjectId undefined'); } 发现问题是,在home.xwl tab.change中上述代码,第一次打开模块的时候, Cannot read property 'getProjectId' of undefined, 但模块已经打开,只是切换(beforeactivate),能正确调用。 因此问题好像是 模块打开之后,在home.xwl tab change的时候,模块貌似还没实体化好,这个如何处理呢? |
2019-03-06 10:37 | #11 | ||||||||
|
建议理顺你的应用逻辑, 你是在beforeactive触发,该事件当然不会有模块加载 |
2019-03-06 23:23 | #12 | ||||||||
|
我的应用逻辑是这样的,我写了 一些功能模块,可以通过点击左边模块树上的相应模块直接运行模块,运行的模块是作为Wb. home.xwl tab控件的一个tab,我需要再home.xwl的tab 切换到 我写的模块的时候,自动触发自定义函数。 举例,假设 admin/dept.xwl 就是我写的模块,运行之后,我想在用户从其他tab切换到 部门管理 的时候,调用某一个函数。 dept.xwl 没有beforeactivate事件,dept.xwl可以在tab上运行,也可以直接 http://localhost:8080/wb/m?xwl=admin/dept (没有在tab)中运行。 |
2019-03-07 07:29 | #13 | ||||||||
|
我的业务目的:想在切换到业务模块的时候,自动更新并提取一些业务信息显示在home.xwl的右上角() 用户 左侧。 所以想到的逻辑是:在home.xwl的tab change中监控是否切换到了业务模块,然后调用业务模块中的方法更新信息,并提取属性用于home.xwl右上角的显示 |
2019-03-07 10:44 | #14 | ||||||||
|
可以参考示例应用下面的portal示例 |
2019-04-16 09:59 | #15 | ||||||||
|
beforeactive事件是在切换卡之前触发的 |
2019-05-17 13:02 | #16 | ||||||||
|
最后在判断 appScope的方法之前,先判断 appScope自身是否已经初始化完成,如果没有初始化完成,说明是第一次打开,那么原则上不需要 调用。 if (tab.appScope && tab.appScope.getProjectId) { //判断该模块中是否定义了 getProjectId函数 Cs.info(tab.appScope.getProjectId); Cs.info(tab.appScope.getProjectId()); //getProjectId() 是自定义的函数 } |
2019-05-21 11:44 | #17 | ||||||||
|
可以把完整的方法分享出来 |