文档帮助

术语、图标和标签

许多类在使用配置对象创建(实例化)类时都有快捷名称。快捷名称被称为 alias(如果类扩展了 Ext.Component,则称为 xtype)。别名/xtype 列在适用类的类名旁边,以便快速参考。

访问级别

框架类或其成员可以指定为 privateprotected。否则,该类/成员为 publicPublicprotectedprivate 是访问描述符,用于传达如何以及何时应使用类或类成员。

成员类型

成员语法

下面是一个示例类成员,我们可以对其进行剖析,以展示类成员的语法(在本例中是从 Ext.button.Button 类查看的 lookupComponent 方法)。

lookupComponent ( item ) : Ext.Component
受保护的

当原始配置对象添加到此容器时调用,无论是在初始化 items 配置期间,还是在 添加 或 {@link #insert 插入} 新项时。

此方法将传递的对象转换为实例化的子组件。

当需要对子组件创建应用特殊处理时,可以在子类中覆盖此方法。

参数

item :  Object

正在添加的配置对象。

返回值
Ext.Component

要添加的组件。

让我们看一下成员行的每个部分

成员标志

API 文档使用许多标志来进一步传达类成员的功能和意图。标签可以用文本标签、缩写或图标表示。

类图标

- 表示框架类

- Singleton 框架类。*有关更多信息,请参阅 singleton 标志

- 组件类型框架类(Ext JS 框架中扩展 Ext.Component 的任何类)

- 表示类、成员或指南在当前查看的版本中是新的

成员图标

- 表示类型为 config 的类成员

- 表示类型为 property 的类成员

- 表示类型为 method 的类成员

- 表示类型为 event 的类成员

- 表示类型为 theme variable 的类成员

- 表示类型为 theme mixin 的类成员

- 表示类、成员或指南在当前查看的版本中是新的

类成员快速导航菜单

在 API 文档页面上的类名下方,有一行按钮,对应于当前类拥有的成员类型。每个按钮显示按类型划分的成员计数(此计数会随着应用过滤器而更新)。单击按钮将导航到该成员部分。将鼠标悬停在成员类型按钮上将显示该类型的所有成员的弹出菜单,以便快速导航。

Getter 和 Setter 方法

与类 config 选项相关的 Getter 和 Setter 方法将显示在方法部分以及 API 文档和成员类型菜单的 config 部分中,就在它们与之配合使用的 config 下方。Getter 和 Setter 方法文档将在 config 行中找到,以便于参考。

历史记录栏

您的页面历史记录保存在本地存储中,并显示在顶部标题栏下方(使用可用的实际空间)。默认情况下,显示的唯一搜索结果是与您当前查看的产品/版本匹配的页面。您可以通过单击历史记录栏右侧的 按钮并选择“全部”单选按钮来扩展显示的内容。这将显示历史记录栏中所有产品/版本的所有最近页面。

在历史记录配置菜单中,您还将看到最近页面访问的列表。结果按“当前产品/版本”和“全部”单选按钮过滤。单击 按钮将清除历史记录栏以及本地存储中保存的历史记录。

如果在历史记录配置菜单中选择“全部”,则“在历史记录栏中显示产品详细信息”的复选框选项将启用。选中后,每个历史页面的产品/版本将在历史记录栏中的页面名称旁边显示。将光标悬停在历史记录栏中的页面名称上也会将产品/版本显示为工具提示。

搜索和过滤器

可以使用页面顶部的搜索字段搜索 API 文档和指南。

在 API 文档页面上,还有一个过滤器输入字段,可使用过滤器字符串过滤成员行。除了按字符串过滤外,您还可以按访问级别、继承和只读过滤类成员。这可以通过使用页面顶部的复选框来完成。

API 类导航树底部的复选框会过滤类列表,以包含或排除私有类。

单击空的搜索字段将显示您最近的 10 次搜索,以便快速导航。

API 文档类元数据

每个 API 文档页面(JavaScript 原始类型页面除外)都有一个与该类相关的元数据菜单视图。此元数据视图将具有以下一项或多项

展开和折叠示例以及类成员

可运行的示例 (Fiddles) 默认在页面上展开。您可以使用代码块左上角的箭头单独折叠和展开示例代码块。您还可以使用页面右上角的切换按钮切换所有示例的折叠状态。切换所有状态将在页面加载之间记住。

类成员默认在页面上折叠。您可以使用成员行左侧的箭头图标或全局使用右上角的展开/折叠所有切换按钮来展开和折叠成员。

桌面视图与移动视图

在较窄的屏幕或浏览器上查看文档将导致针对较小尺寸优化的视图。桌面视图和“移动”视图之间的主要区别在于

查看类源代码

可以通过单击 API 文档页面顶部的类名来查看类源代码。可以通过单击成员行右侧的“查看源代码”链接来查看类成员的源代码。

GXT 4.x


顶部

ExtJs JsInterop 示例

JsInterop 使在 GXT 应用程序中使用 ExtJs API 成为可能。下面使用的策略是紧密拥抱 ExtJs,并使用通用 Java 对象来定义类型。在包装器形成的初期,使用通用 Java 类型可以实现快速迭代。虽然示例中使用了通用类型,但可以创建 JsTypes 来表示通用对象。

必需

  • GWT 2.8.0-beta1+

JsTypes 必需

  • 对象字面量是为 Ext.create 和 Ext.define 创建类配置所必需的。

      // Use this to create a Object literals for configs
      // Object Literal: { propertyA : 0, propertyB : 1.0, propertyC : "d" };
      @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
      public class MyLiteral {
          public Object propertyA;
          public float propertyB;
          public String propertyC
      }
    

参考

导入 Extjs

ExtJs 通常配置加载器以加载运行应用程序所需的片段。因此,为了使其在没有微型加载器的情况下工作,必须导入整个单体 Javascript 文件并将其附加到 DOM。

  • 导入将如下所示

      <!doctype html>
      <html>
      <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <link type="text/css" rel="stylesheet" href="MyGxtProjectExtJs.css">
        <title>Project Ext Js</title>
    
              <!-- GWT Module -->
              <script type="text/javascript" src="JsInteropExamples/JsInteropExamples.nocache.js"></script>
    
              <!-- ExtJs - Compiled Theme CSS -->
              <link rel="stylesheet" type="text/css" href="theme-triton/resources/theme-triton-all.css">
              <link rel="stylesheet" type="text/css" href="triton/resources/charts-all-debug.css">
    
              <!-- ExtJs All - Start by using debug, and graduate to the minified -->
              <script type="text/javascript" src="ext-all-debug.js"></script> 
              <script type="text/javascript" src="charts-debug.js"></script>
    
              <!-- ExtJs Theme-->
              <script type="text/javascript" src="theme-triton/theme-triton.js"></script>
    
              <!-- ExtJs Rendering -->
              <meta http-equiv="X-UA-Compatible" content="IE=edge">
              <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
      </head>
      <body>
      </body>
      </html>
    

调用 Ext.create 和 Ext.define

加载 Javascript API 后,可以通过创建 JsType 包装器来调用 Ext

  • 用于调用 Ext 函数的 JsType

      import jsinterop.annotations.JsMethod;
      import jsinterop.annotations.JsPackage;
      import jsinterop.annotations.JsProperty;
      import jsinterop.annotations.JsType;
    
      @JsType(isNative = true, name = "Ext", namespace = JsPackage.GLOBAL)
      public abstract class Ext {
    
        @JsProperty(name = "isChrome")
        public static native boolean isChrome();
    
        @JsMethod
        public static native void define(String className, java.lang.Object data);
    
        @JsMethod
        public static native java.lang.Object create(java.lang.Object config);
    
        @JsMethod
        public static native java.lang.Object create(String className, java.lang.Object config);
    
      }
    

定义模型

ExtJs 类必须在粒度级别上定义。这意味着必须定义属性和访问器。一旦模型被定义,JsType 可以包装模型定义。首先在配置中定义模型的字段。

  • 模型字段 JsType

      @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
      public static class Field {
        @JsProperty
        String name;
        @JsProperty
        String type;
      }
    
  • 模型配置 JsType

      @JsType
      public static class DefineNameValueModelConfig {
        @JsProperty
        Object extend;
        @JsProperty
        Object fields;
      }
    
  • 定义 ExtJs 模型行为 - 这将为模型创建命名空间,com.example.NameValueModel

      Field field0 = new Field();
      field0.name = "name";
      field0.type = "string";
      Field field1 = new Field();
      field1.name = "value";
      field1.type = "float";
      Field[] fields = new Field[2];
      fields[0] = field0;
      fields[1] = field1;
    
      DefineNameValueModelConfig config = new DefineNameValueModelConfig();
      config.extend = "Ext.data.Model";
      config.fields = fields;
      Ext.define("com.example.NameValueModel", config);
    
  • 最后使用 Ext.define 定义模型

      @JsType
      public static class NameValueModel {
        @JsProperty()
        public String name;
        @JsProperty()
        public Double value;
      }
    

创建模型

一旦为模型创建了 JsType,就可以像这样创建模型。

    NameValueModel nvm0 = new NameValueModel();
    nvm0.name = "A";
    nvm0.value = 1.0;
    NameValueModel nvm1 = new NameValueModel();
    nvm1.name = "B";
    nvm1.value = 2.0;
    NameValueModel nvm2 = new NameValueModel();
    nvm2.name = "C";
    nvm2.value = 3.0;
    NameValueModel nvm3 = new NameValueModel();
    nvm3.name = "D";
    nvm3.value = 4.0;
    NameValueModel nvm4 = new NameValueModel();
    nvm4.name = "E";
    nvm4.value = 5.0;

    NameValueModel[] datas = new NameValueModel[4];
    datas[0] = nvm0;
    datas[1] = nvm1;
    datas[2] = nvm2;
    datas[3] = nvm3;
    datas[4] = nvm4;

Store 和模型

一旦创建了模型,就可以在 Store 中使用它。

  • 首先创建一个 Store 配置,该配置将用于创建 Store。

      @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
      public static class StoreConfig {
        @JsProperty
        Object model;
        @JsProperty
        Object fields;
        @JsProperty
        Object[] data;
        @JsProperty
        Object autoLoad;
        @JsProperty
        Object proxy;
      }
    
  • 然后创建 Store

      // This example I use Object for the return
      // Simply create JsType for Store and add in the accessors needed for a concrete Java type. 
      Object store = Ext.create("Ext.data.Store", storeConfig);
    

GXT 4.x