许多类在使用配置对象创建(实例化)类时都有快捷名称。快捷名称被称为 alias
(别名)(如果类扩展自 Ext.Component,则为 xtype
)。别名/xtype 列在适用类的类名旁边,以供快速参考。
框架类或其成员可以指定为 private
(私有的)或 protected
(受保护的)。否则,类/成员是 public
(公共的)。Public
、protected
和 private
是访问描述符,用于传达类或类成员应如何以及何时使用。
Public(公共的)类和类成员可供任何其他类或应用程序代码使用,并且在主要产品版本中可以作为稳定和持久的部分来依赖。公共类和成员可以通过子类安全地扩展。
Protected(受保护的)类成员是稳定的 public
(公共的)成员,旨在由拥有类或其子类使用。受保护的成员可以通过子类安全地扩展。
Private(私有的)类和类成员由框架内部使用,不供应用程序开发人员使用。私有类和成员可能会随时更改或从框架中省略,恕不另行通知,并且不应在应用程序逻辑中依赖。
static
(静态)标签。 *请参阅下面的静态。下面是一个类成员示例,我们可以对其进行剖析,以展示类成员的语法(在本例中是从 Ext.button.Button 类查看的 lookupComponent 方法)。
让我们看一下成员行的每个部分
lookupComponent
)( item )
)Ext.Component
)。对于不返回除 undefined
之外的任何内容的方法,可以省略此项,或者可以显示为由正斜杠 /
分隔的多个可能值,表示返回的内容可能取决于方法调用的结果(即,如果 get 方法调用成功,方法可能返回 Component,如果失败,则返回 false
,这将显示为 Ext.Component/Boolean
)。PROTECTED
- 请参阅下面的标志部分)Ext.container.Container
)。如果成员源自当前类,则源类将显示为蓝色链接;如果成员是从祖先类或混入类继承而来,则显示为灰色。view source
)item : Object
)。undefined
之外的值,则“返回值”部分将注明返回的类或对象类型以及描述(示例中为 Ext.Component
)Available since 3.4.0
- 示例中未显示),就在成员描述之后Defaults to: false
)API 文档使用许多标志来进一步传达类成员的功能和意图。标签可以用文本标签、缩写或图标表示。
classInstance.method1().method2().etc();
false
,则标记为可阻止的事件将不会触发- 表示框架类
- 单例框架类。 *有关更多信息,请参阅单例标志
- 组件类型框架类(Ext JS 框架中扩展自 Ext.Component 的任何类)
- 表示类、成员或指南在当前查看的版本中是新的
- 表示类型为 config
的类成员
- 表示类型为 property
的类成员
- 表示类型为 method
的类成员
- 表示类型为 event
的类成员
- 表示类型为 theme variable
的类成员
- 表示类型为 theme mixin
的类成员
- 表示类、成员或指南在当前查看的版本中是新的
在 API 文档页面上的类名正下方是一行按钮,对应于当前类拥有的成员类型。每个按钮显示按类型划分的成员计数(此计数会随着应用过滤器而更新)。单击按钮将导航到该成员部分。将鼠标悬停在成员类型按钮上将显示该类型的所有成员的弹出菜单,以便快速导航。
与类配置选项相关的 Getter 和 Setter 方法将显示在方法部分以及 API 文档和成员类型菜单的配置部分中,就在它们所作用的配置下方。Getter 和 Setter 方法文档将在配置行中找到,以便于参考。
您的页面历史记录保存在本地存储中,并在顶部标题栏正下方显示(使用可用的实际空间)。默认情况下,仅显示与您当前查看的产品/版本匹配的搜索结果。您可以通过单击历史记录栏右侧的 按钮并选择“全部”单选选项来展开显示的内容。这将显示所有产品/版本在历史记录栏中的所有最近页面。
在历史记录配置菜单中,您还将看到最近访问页面的列表。结果按“当前产品/版本”和“全部”单选选项进行过滤。单击 按钮将清除历史记录栏以及本地存储中保存的历史记录。
如果在历史记录配置菜单中选择“全部”,“在历史记录栏中显示产品详细信息”的复选框选项将启用。选中后,每个历史页面的产品/版本将与页面名称一起显示在历史记录栏中。将光标悬停在历史记录栏中的页面名称上也会将产品/版本显示为工具提示。
可以使用页面顶部的搜索字段搜索 API 文档和指南。
在 API 文档页面上,还有一个过滤器输入字段,该字段使用过滤器字符串过滤成员行。除了按字符串过滤外,您还可以按访问级别、继承和只读过滤类成员。这是通过使用页面顶部的复选框完成的。
API 类导航树底部的复选框过滤类列表,以包含或排除私有类。
单击空的搜索字段将显示您最近 10 次搜索,以便快速导航。
每个 API 文档页面(JavaScript 原始类型页面除外)都有一个与该类相关的元数据菜单视图。此元数据视图将具有以下一项或多项
Ext.button.Button
类具有 Ext.Button
的备用类名)。备用类名通常为了向后兼容性而维护。可运行的示例 (Fiddles) 默认在页面上展开。您可以使用代码块左上角的箭头单独折叠和展开示例代码块。您还可以使用页面右上角的切换按钮来切换所有示例的折叠状态。切换所有状态将在页面加载之间记住。
类成员默认在页面上折叠。您可以使用成员行左侧的箭头图标或右上角的展开/折叠全部切换按钮全局展开和折叠成员。
在较窄的屏幕或浏览器上查看文档将导致针对较小外形尺寸优化的视图。桌面视图和“移动”视图之间的主要区别在于
可以通过单击 API 文档页面顶部的类名来查看类源代码。可以通过单击成员行右侧的“view source”(查看源代码)链接来查看类成员的源代码。
Exporter 包支持将数据导出为各种文件格式。它支持原生 XSLX、Excel XML 以及 HTML 和 CSV/TSV(逗号/制表符分隔值)格式。
该包未捆绑在 Ext JS 框架中,但很容易要求将其添加到您的应用程序中。无论您是使用 Sencha Cmd 生成的应用程序还是使用您自己设计的应用程序结构,包含 Exporter 代码只需几个步骤。
注意: 本指南涵盖了 Ext JS 6.2+ SDK Premium 版本中捆绑的 exporter 包。
Exporter 可与 Sencha Ext JS 6.2+ 的经典和现代工具包一起使用。
使用 Exporter 不需要 Sencha Cmd。但是,使用 Cmd 允许您通过应用程序的 app.json
文件无缝包含 Exporter 包。
Exporter 随附完整源代码,这些源代码以易于部署到应用程序的 packages 文件夹的方式打包。
要将 Exporter 包含在应用程序中,只需修改应用程序根目录中的 app.json
文件以要求 Exporter 包
{
"name": "YourApp",
"requires": [
"exporter"
],
"id": "391a5ff6-2fd8-4e10-84d3-9114e1980e2d"
}
该包支持经典和现代工具包,因此无需工具包相关的配置。
SDK 包含 Exporter 代码的编译版本,该版本适用于不使用 Sencha Cmd 的用户。要以这种方式包含 Exporter,请从您的索引页链接以下资源
{unzippedFolder}/packages/exporter/build/{toolkit}/exporter.js
该包提供了一个 grid 插件和一些类,这些类生成的文件也可以独立使用。
它允许将 grid 数据导出为包中提供的各种文件格式。
该插件向 grid 组件添加了两个新方法
saveDocumentAs:此函数将保存导出的文件
getDocumentData:返回导出的文档内容
这两个函数都接受一个配置对象作为参数
type:这是 exporter 类型(_默认为 excel)。
title:设置标题以显示在导出文档中的列标题上方。
fileName:已保存文件的名称。
{
xtype: 'grid',
plugins: 'gridexporter',
columns: [{
dataIndex: 'value',
text: 'Total',
exportStyle: {
format: 'Currency',
alignment: {
horizontal: 'Right'
}
}
}]
}
// later in an event listener
grid.saveDocumentAs({
type: 'xlsx',
title: 'My export',
fileName: 'myExport.xlsx'
});
以下配置在 grid 列上可用
ignoreExport 设置为 true 以忽略该列的数据导出
exportStyle 允许您格式化该列上的导出数据
exportStyle
可以定义为单个对象,该对象将由所有可用的 exporter 使用
{
xtype: 'datecolumn',
dataIndex: 'date',
text: 'Date',
width: 120,
exportStyle: {
alignment: {
horizontal: 'Right'
},
font: {
bold: true
},
format: 'Short Date'
}
}
它也可以定义为对象数组,每个对象都有一个“type”属性,用于指定它适用的 exporter
{
xtype: 'numbercolumn',
dataIndex: 'price',
text: 'Price',
exportStyle: [{
type: 'html', // used by the html exporter
format: 'Currency',
alignment: {
horizontal: 'Right'
},
font: {
italic: true
}
},{
type: 'csv', // used by the csv exporter
format: 'General'
}]
}
当使用数组形式时,如果第一个条目没有“type”属性,它将用于其类型没有匹配条目的 exporter。
{
xtype: 'numbercolumn',
dataIndex: 'price',
text: 'Price',
exportStyle: [{
// no "type" defined means this is the default
format: 'Currency',
alignment: {
horizontal: 'Right'
},
font: {
italic: true
}
},{
type: 'csv', // only the CSV exporter has a special style
format: 'General'
}]
}
此插件是 pivot
包的一部分,但使用 exporter 导出数据。grid 列使用的 exportStyle
配置和上一节中描述的配置在 pivot grid 的聚合轴和左轴维度上可用。
{
xtype: 'pivotgrid',
plugins: 'exporter',
matrix: {
leftAxis: [{
dataIndex: 'employee',
header: 'Employee',
exportStyle: {
font: {
bold: true
}
}
}],
aggregate: [{
dataIndex: 'price',
header: 'Total',
aggregator: 'sum',
exportStyle: {
format: 'Currency',
alignment: {
horizontal: 'Right'
},
font: {
italic: true
}
}
}]
// ... more configs
}
}
exporter 的基类是 Ext.exporter.Base。如果需要新的 exporter,则可以定义一个新的类来扩展 Base 类。
Ext.define('App.exporter.Pdf', {
extend: 'Ext.exporter.Base',
alias: 'exporter.pdf',
fileName: 'export.pdf',
binary: true,
getContent: function(){
// generate pdf content and return it back
}
});
新的 exporter 将可用于 Grid 和 Pivot Grid Exporter 插件。
// in an event listener
grid.saveDocumentAs({
type: 'pdf',
title: 'My export',
fileName: 'myExport.pdf'
// ... other pdf specific configs
});
在某些情况下,不需要来自 grid panel 或 pivot grid 的表格数据也需要导出到文件。这可以使用可用的 exporter 独立实现。
var exporter = Ext.Factory.exporter({
type: 'excel',
data: {
columns: [{
text: 'Vacation',
columns: [
{ text: 'Month', width: 200, style: { alignment: { horizontal: 'Right' } } },
{ text: 'Days', style: { format: 'General Number' } }
]
}],
groups: [{
text: 'Employees',
groups: [{
text: 'Adrian',
rows: [{
cells: [
{ value: 'January' },
{ value: 2 }
]
},{
cells: [
{ value: 'July' },
{ value: 10 }
]
}],
summaries: [{
cells: [
{ value: 'Total' },
{ value: 12 }
]
}]
},{
text: 'John',
rows: [{
cells: [
{ value: 'March' },
{ value: 4 }
]
},{
cells: [
{ value: 'May' },
{ value: 4 }
]
},{
cells: [
{ value: 'July' },
{ value: 2 }
]
}],
summaries: [{
cells: [
{ value: 'Total' },
{ value: 10 }
]
}]
}],
summaries: [{
cells: [
{ value: 'Grand total' },
{ value: 22 }
]
}]
}]
}
});
// save the file
exporter.saveAs().then( function() { exporter.destroy(); } );
单例 Ext.exporter.File 包含用于文件操作的函数。exporter 使用它来将生成的文件保存在最终用户机器上。某些现代浏览器允许通过 Blobs 本地保存文件,但其他浏览器不支持此功能。为了解决这个问题,生成的文件内容被发送到服务器并返回,并带有适当的标头,这将触发文件下载。执行此操作的默认服务器在 Ext.exporter.File#property-url 中定义,该服务器指向 https://exporter.sencha.com,但也可以使用内部服务器代替。
在 exporter 包中查看 server 文件夹,了解 Node 和 PHP 服务器脚本的实现。