jQuery MiniUI

 找回密码
 立即注册
查看: 6421|回复: 10
打印 上一主题 下一主题

关于desktop的打开问题? [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2013-2-4 14:19:52 |只看该作者 |倒序浏览
在使用desktop时,利用type: "ux.iframewindow" 这个打开了我需要的网页,问题是没有,但是出现了一个小疑惑,是不是每一个窗口打开后就被注册了,为什么我关闭这个窗口,再次去打开的时候,数据还是没有刷新,也就是说这个刷新只针对于第一次打开有效,其他的时候关闭,相当于隐藏了一样,不是真正的关闭?我想关闭了,就是关闭,打开的话就是又一次新的打开!求解答!

Rank: 8Rank: 8

沙发
发表于 2013-2-4 14:55:25 |只看该作者
你参考里面的iframewindow来做吧,这样每次打开就是重新加载url了

Rank: 2

板凳
发表于 2013-2-4 15:52:24 |只看该作者
本帖最后由 panxiaochao 于 2013-2-4 15:54 编辑
factory 发表于 2013-2-4 14:55
你参考里面的iframewindow来做吧,这样每次打开就是重新加载url了

我用的就是type: "ux.iframewindow"!对了,有没有方法是对desktop桌面显示的那个modules里面的数据重新加载!

Rank: 8Rank: 8

地板
发表于 2013-2-4 16:09:49 |只看该作者
本帖最后由 factory 于 2013-2-4 16:10 编辑
panxiaochao 发表于 2013-2-4 15:52
我用的就是type: "ux.iframewindow"!对了,有没有方法是对desktop桌面显示的那个modules里面的数据重新加 ...
  1. mini.ux.IFrameWindow = function () {
  2.     mini.ux.IFrameWindow.superclass.constructor.call(this);  
  3.     this.initControls();  
  4. }
  5. mini.extend(mini.ux.IFrameWindow, mini.ux.Window, {
  6.     title: "IFrame Window",
  7.     url: "",
  8.     initControls:function(){
  9.         this.on("beforebuttonclick",function(e){
  10.             if(e.button.name == "close"){
  11.                 var src = this.getIFrameEl().src;
  12.                 this.getIFrameEl().src= src;
  13.             }
  14.         })
  15.     }
  16. });
  17. mini.regClass(mini.ux.IFrameWindow, "ux.iframewindow");
复制代码
你修改下IFrameWindow.js
当关闭的时候,把iframe的url重新给定一下,试试呢

Rank: 2

5#
发表于 2013-2-5 14:38:44 |只看该作者
本帖最后由 panxiaochao 于 2013-2-5 14:40 编辑
factory 发表于 2013-2-4 16:09
你修改下IFrameWindow.js
当关闭的时候,把iframe的url重新给定一下,试试呢

我试了一下,关闭后确实重定向了,但是可能不是我要效果,我在那个iframewindow里加载的页面是动态datagrid,像本来的话不是打开这个页面datagrid就会读数据,而现在的话,第一次打开是读数据了,因为这是第一次注册了这个窗体,本来没有使用之前,关闭后,再打开没有任何变化,相当于再打开的是那个缓存页面,也就是说关闭这个窗口,这个窗口并没有被destroy掉,而是被隐藏了一般,加了你这个方法后,变成了关闭窗口就重定向,但是没有用啊,我需要的是打开窗口里面的页面被重新加载,一般响应数据页面应该是这样的把!我不知道这算不算是一个BUG,关闭窗口类似于隐藏了,其实并没有 destroy,所以你再次打开的时候还是之前的东西,根本没有效果,关闭的话应该是整个窗口被  destroy掉,打开的话,就是新的一个createWindow,恕我多言啊,莫怪!

Rank: 8Rank: 8

6#
发表于 2013-2-5 15:32:19 |只看该作者
panxiaochao 发表于 2013-2-5 14:38
我试了一下,关闭后确实重定向了,但是可能不是我要效果,我在那个iframewindow里加载的页面是动态datagri ...

吧desktop/index.html 里面的desk.on
改成
  1. desk.on("moduleclick", function (e) {
  2.         var module = e.module;
  3.         var win = module.single = desk.createWindow(module.type);
  4.         if (win) {
  5.             if (win.type == "ux.iframewindow") {
  6.                 win.setUrl(module.url);
  7.             }
  8.             desk.showWindow(win);
  9.         }
  10.     });
复制代码
然后将DeskTop.js里面的__OnWindowBeforeButtonClick方法里面的关闭的hidewindow改成destroywindow
  1. __OnWindowBeforeButtonClick: function (e) {
  2.         e.cancel = true;

  3.         var win = e.sender;
  4.         if (e.name == "close") {
  5.             this.destroyWindow(win);
  6.         }
复制代码
然后再试试呢
desktop的源码在试用包里面有的,你如果需要做成什么样,自己可以随意去修改

Rank: 2

7#
发表于 2013-2-5 16:56:18 |只看该作者
本帖最后由 panxiaochao 于 2013-2-6 12:29 编辑
factory 发表于 2013-2-5 15:32
吧desktop/index.html 里面的desk.on
改成然后将DeskTop.js里面的__OnWindowBeforeButtonClick方法里面的 ...

试了一下,嗯,可以的,对了想DeskTop.js里面,只能看懂一半,有没有API讲解啊,如果要自己扩展的话有点困难啊!还有我想在desktop的桌面上的图表,我想重新定义,然后写了个js
  1. function ss()
  2.         {
  3.                 modules = [
  4.                         { name: "iframe", text: "Java实验室群", iconCls: "desk-window", title: "Java实验室群", type: "ux.iframewindow", url: "page.html" }                                                         
  5.                 ];        
  6.                 desk.setModules(modules);
  7.                
  8.         }
复制代码

我想重新定义这个 modules ,然后desk在set,好像不行,是不是要把之前的给destroy掉,再重新给他,不用重新页面!

Rank: 8Rank: 8

8#
发表于 2013-2-5 17:11:04 |只看该作者
panxiaochao 发表于 2013-2-5 16:56
试了一下,嗯,可以的,对了想DeskTop.js里面,只能看懂一半,有没有API讲解啊,如果要自己扩展的话有点困 ...

desk.setModules(modules);
        desk.render(document.body);
后面加上render试试

Rank: 2

9#
发表于 2013-2-5 17:22:54 |只看该作者
factory 发表于 2013-2-5 17:11
desk.setModules(modules);
        desk.render(document.body);
后面加上render试试

嗯,可以的!嘻嘻,谢谢!又问题再问!

Rank: 2

10#
发表于 2013-2-6 12:22:51 |只看该作者
本帖最后由 panxiaochao 于 2013-2-6 12:25 编辑
factory 发表于 2013-2-5 17:11
desk.setModules(modules);
        desk.render(document.body);
后面加上render试试

我想把前台那个改变
  1. desk.setModules(modules);
  2. desk.render(document.body);
复制代码
这个的方法,放到关闭这个响应里面:
  1. __OnWindowBeforeButtonClick: function (e) {
  2.         e.cancel = true;

  3.         var win = e.sender;
  4.         if (e.name == "close") {
  5.             //this.hideWindow(win);
  6.                         this.destroyWindow(win);
  7.        
  8.                         var wintitle = win.title;
  9.                         if(win.title == 'xxxx') {
  10.                                 var mo = [
  11.                                         { name: "iframe", text: "xxxx", iconCls: "desk-window", title: "xxxxxx", type: "ux.iframewindow", url: "page.html" }                                                          
  12.                                 ];
  13.                                 this.setModules(mo);
  14.                                 //就是上面set之后desk.render(document.body);这句效果一样的语句!
  15.                         }
复制代码


就是上面set之后desk.render(document.body);这句效果一样的语句!





Archiver|普加软件

GMT+8, 2024-11-27 15:43 , Processed in 1.051693 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部