【发布时间】:2012-07-03 11:25:44
【问题描述】:
TL/DR:
调用window.setActive(false) 不会将窗口的active 属性设置为false。
详细信息:
我有以下 ExtJS 类继承自 Ext.window.Window:
Ext.define('WD.view.TbWindow', {
extend : 'Ext.window.Window',
isTbWindow: true,
title: 'Set Me!!',
constrain: true, // constrain window to viewport
autoShow: false,
maximizable: true,
minimizable: true,
renderTo: 'main_panel-body',
minimize: function() {
this.hide();
this.setActive(false);
this.animateTarget.handleWinMinimize();
},
...
});
在上面的函数minimize中有调用this.setActive(false);
我使用 Chrome 开发者工具来调试代码。在执行this.active 之前是true。行执行后它仍然是true。我正在使用 ExtJS 4.1。
【问题讨论】:
-
你试过颠倒
this.hide();和this.setActive(false);的顺序吗?另外,在minimize函数中执行console.log(this),并确保this正在评估窗口对象。 -
最好将
alert("called")添加到minimize函数中,以确保它被调用。 -
@Waltzy 谢谢你的建议。尝试切换语句的顺序,并检查
this实际上是窗口。但都没有解决问题。 -
这很奇怪.. @OffTopic,您尝试过使用 Architect 吗? sencha.com/products/architect 非常适合调试 extjs。
-
@Josvic Zammit 我们在工作中大量使用 EXTJS,如果您使用 Sencha 设计器,我必须在这一点上指出,Architect 比设计器更好,它更像是一个完整的 IDE,它在应用程序结构中强制执行最佳实践,并且对 Ext.Direct(如果您使用它)有一些非常好的支持,我们仍然使用 chrome 进行调试,但是将 Aptana(我们以前使用的)中的开发与 Architect 进行比较是不明智的,你不要把你的一生都花在为所有琐碎的东西(如 xtypes 和 layout config 等)参考 API 上,这样你就可以专注于代码,获得 30 天的试用期!
标签: javascript extjs extjs4 extjs4.1