1

我一直在使用 GWT 2.3.0 和 GXT 2.2.5 进行开发。我终于能够升级到 GWT 2.4.0 并决定研究迁移到 GXT 3.0 需要什么,但马上我就遇到了障碍。

该应用程序通过屏蔽浏览器来阻止用户。我使用以下命令来执行此操作:

XDOM.getBodyEl.mask();
XDOM.getBodyEl.unmask();

我注意到的第一件事是,在 3.0 中,XDOM 不再具有 getBodyEl() 方法,因此我无法从应用程序的任何位置检索顶部文档小部件。我确实看到现在有一​​个 Mask 类,但由于它需要一个元素参数才能工作,所以我仍然需要一种相当简单的方法来获取文档正文元素。

我尝试通过 Sencha 论坛搜索但没有成功。关于我如何做到这一点的任何建议?

4

1 回答 1

2

这是好消息/坏消息的情况之一。好消息是它El已经消失了,不再混淆何时包装,何时El.fly,何时保存引用等。更多好消息:新版本被调用XElement,并且将 anElement转换为 an XElement,您只需强制转换(java演员或jso .cast()):

Element elt = ...;
XElement oneWay = elt.cast();
XElement theOtherWay = (XElement) elt;

无论哪种方式都有效,没有开销。El的所有魔法,没有任何混乱。

除了坏消息。但首先,还有一些好消息:

此更改是尝试以 GWT 方式做事的更大战略的一部分,它简化了做任何事情所需的指南数量,并消除了 GXT 对现有 GWT 功能所做的一些重复。当您查看 GWT 多年来的增长方式时,大部分重复都是有意义的,而当 GXT 需要比 GWT 提供的功能更多的功能时(布局面板与布局容器、RootLayoutPanelvs ViewportHasDatavsStores等),其余部分通常是有意义的。GXT 现在使用 GWT 东西的其他领域:HTMLLabel小部件SafeHtml和其他字符串格式(除了XTemplatesSafeHtmlTemplates非常棒),支持 RPC/RequestFactory/anything-else-that-looks-like-an-object、CellAPI、编辑器框架等

坏消息:

既然从任何事物中获取事物就是那么容易,那么XElement将事物转换为El对象的大多数便捷方法也已不复存在。XDOM仍然存在,但它现在只做一些事情,主要是出于某种原因不能做DOMDocument不能做的事情(旁注:GWT 的DOM类现在至少有一半被弃用,可能会在 GWT 3 左右消失)。

所以,当你得到想要做某事的 dom 元素时(比如 mask),你必须先转换它。在你的身体元素掩蔽的情况下,这在 GXT 3 中看起来有点像这样:

Document.get().getBody().<XElement>cast().mask("Loading...");//or null if you don't want text

您也可以获取 Mask 类并这样做(这次使用 java 强制转换来证明它都是一样的):

Mask.mask((XElement) Document.get().getBody(), "Loading...");
于 2013-11-08T22:24:07.083 回答