extjs桌面,无法保存窗口位置

时间:2014-03-05 17:32:20

标签: javascript extjs event-handling resize

我需要将窗口的位置和大小保存到db表中, 因此:

关于事件“创造” - >保存位置和大小

关于事件“移动” - >保存位置

关于事件“调整大小” - >保存大小

关于事件“最大化” - >保存“最大化”,但不是位置(0,0)和大小(desktopSize)

  • 该案件的必要性:
    1. 用户注销并登录
    2. 推“恢复”-Button
    3. 窗口应在最大化
    4. 之前缩小到大小(和位置)

如果旧位置和大小保留在数据库中,则只能实现此目的。

某些事件启动某些函数以通过AJAX将值存储到db,顾名思义:

调整大小saveSize()
移动savePosition()
最大化saveMaximize()
恢复restoreWindow()

但是我不知道如何处理事件,因为事件没有被触发,因为我会“喜欢”它们被触发。因此,在我有机会获得它们之前,我需要存储的值被覆盖。我记录了这些事件:

(案例 - >事件)

打开窗口:
1. 移动
2. 调整大小
3. 移动
多数民众赞成

“点击”最大化:
1. 调整大小
2. 移动
3. 最大化
位置和大小值会被覆盖,但只需要保存标记“maximized”:true

“点击”恢复:
1. 移动
2. 恢复
3. 调整大小
位置保存到db中,然后才能从db中获取“旧”值以恢复

移动窗口:
- 移动
一切都很好

如何处理?

2 个答案:

答案 0 :(得分:0)

请勿手动执行此操作,而是使用组件状态处理:http://docs.sencha.com/extjs/4.2.2/#!/example/state/state.html

答案 1 :(得分:0)

陷入了我自己的想法。只是忘了问“如何管理这个:最大化和恢复”。

状态存储在window-object本身中:

scope = win.events.maximize.listeners[0].scope;
(object) size = scope.restoreSize
[] position = scope.restorePos

因此,事件“最大化”最后被触发,所以我可以将之前的状态写入db,我觉得它有点脏,因为我不知道为什么extjs经常触发事件