注重体验与质量的电子书资源下载网站
分类于: 云计算&大数据 设计
简介
Ext JS权威指南 豆 0.0分
资源最后更新于 2020-10-27 12:34:29
作者:黄灯桥
出版社:机械工业出版社
出版日期:2012-01
ISBN:9787111380634
文件格式: pdf
标签: ExtJS JavaScript 软件开发 编程 前端 extjs ext 贵
简介· · · · · ·
Web应用的开发正随着HTML 5与CSS 3标准的不断成熟而进入一个新的时代,JavaScript框架之间的竞争也随着移动应用的迅速普及而愈演愈烈。经过一段时间的洗礼后,JQuery UI和Ext JS因为其各自独特的优势而逐渐成为Web应用开发框架的领导者。JQue ry UI因其轻量级、灵活的特点而受到追捧,Ext JS则以面向对象的模式设计、组件丰富、集成度高等优点而备受企业青睐。
Ext JS 4在Ext JS 3的基础上进行了重大革新,是一个里程碑版本。Ext JS 4经过重新架构以后,更加符合面向对象的设计,更易于扩展,更能满足企业应用不断扩展的要求。尤其是加入了图形功能以后,不仅很好地解决了图表的问题,而且还使该框架可以拓展到图形领域。随着HTML 5画布功能实现,Ext JS框架会变得更强大。
在项目中使用Ext JS不难,难的是如...
目录
前 言
第1章 Ext JS 4开发入门 / 1
1.1 学习Ext JS必需的基础知识 / 1
1.2 JSON概述 / 3
1.2.1 认识JSON / 3
1.2.2 JSON的结构 / 3
1.2.3 JSON的例子 / 4
1.2.4 在JavaScript中使用JSON / 4
1.2.5 在.NET中使用JSON / 8
1.2.6 在Java中使用JSON / 12
1.2.7 更多有关JSON的信息 / 15
1.3 Ext JS 4概述 / 15
1.4 Ext JS的开发工具的获取、安装与配置介绍 / 18
1.4.1 Ext Designer / 18
1.4.2 在Visual Studio中实现智能提示 / 23
1.4.3 Spket / 28
1.4.4 在Eclipse中实现智能提示 / 32
1.5 如何获得帮助 / 32
1.6 本章小结 / 33
第2章 从“Hello World”开始 / 34
2.1 获取Ext JS 4 / 34
2.2 配置使用Ext JS库 / 35
2.3 编写“Hello World”程序 / 37
2.4 关于Ext.onReady / 38
2.5 关于Ext.BLANK_IMAGE_URL / 40
2.6 关于字体 / 42
2.7 Ext JS 4语法 / 42
2.8 本地化 / 60
2.9 为本书示例准备一个模板 / 60
2.10 本章小结 / 61
第3章 调试工具及技巧 / 62
3.1 使用Firebug进行调试 / 62
3.2 在IE中调试 / 76
3.2.1 使用Debugbar和Companion.js调试 / 76
3.2.2 使用IEtester测试 / 80
3.2.3 在IE 8或IE 9中调试 / 83
3.3 在Chrome中调试 / 84
3.4 调试工具的总结 / 84
3.5 调试技巧 / 85
3.6 本章小结 / 89
第4章 Ext JS的基础架构 / 90
4.1 Ext JS框架的命名空间:Ext / 90
4.1.1 概述 / 90
4.1.2 apply和applyIf方法 / 90
4.1.3 不推荐的extend方法 / 92
4.1.4 数据及其类型检测 / 95
4.1.5 其他的基础方法 / 99
4.2 为框架顺利运行提供支持 / 107
4.2.1 平台检测工具:Ext.is / 107
4.2.2 当前运行环境检测工具:Ext.supports / 109
4.3 Ext JS的静态方法 / 112
4.3.1 概述 / 112
4.3.2 Ext.Object中的静态方法 / 113
4.3.3 Ext.Function中的静态方法 / 120
4.3.4 Ext.Array中的静态方法 / 127
4.3.5 Ext.Error中的静态方法 / 133
4.4 深入了解类的创建及管理 / 135
4.4.1 开始创建类 / 135
4.4.2 创建类的类:Ext.Class / 137
4.4.3 所有继承类的基类:Ext.Base / 151
4.4.4 实现动态加载:Ext.Loader / 151
4.4.5 管理类的类:Ext.ClassManager / 159
4.4.6 类创建的总结 / 161
4.5 动态加载的路径设置 / 163
4.6 综合实例:页面计算器 / 165
4.7 本章小结 / 169
第5章 Ext JS的事件及其应用 / 170
5.1 概述 / 170
5.2 浏览器事件 / 170
5.2.1 绑定浏览器事件的过程:Ext.EventManager / 170
5.2.2 封装浏览器事件:Ext.EventObject / 179
5.2.3 移除浏览器事件 / 181
5.3 内部事件 / 184
5.3.1 内部事件对象:Ext.util.Event / 184
5.3.2 为组件添加事件接口:Ext.util.Observable / 188
5.3.3 为组件绑定事件 / 189
5.3.4 内部事件的触发过程 / 192
5.3.5 移除事件 / 194
5.4 特定功能的事件对象 / 196
5.4.1 延时任务:Ext.util.DelayedTask / 196
5.4.2 一般任务:Ext.util.TaskRunner与Ext.TaskManager / 198
5.4.3 封装好的单击事件:Ext.util.ClickRepeater / 200
5.5 键盘事件 / 201
5.5.1 为元素绑定键盘事件:Ext.util.KeyMap / 201
5.5.2 键盘导航:Ext.util.KeyNav / 204
5.6 综合实例:股票数据的实时更新 / 205
5.7 本章小结 / 214
第6章 选择器与DOM操作 / 215
6.1 Ext JS的选择器:Ext.DomQuery / 215
6.1.1 选择器的作用 / 215
6.1.2 使用Ext.query选择页面元素 / 215
6.1.3 基本选择符 / 223
6.1.4 属性选择符 / 229
6.1.5 CSS属性值选择符 / 234
6.1.6 伪类选择符 / 235
6.1.7 扩展选择器 / 248
6.1.8 Ext.DomQuery的使用方法 / 249
6.1.9 Ext JS选择器的总结 / 252
6.2 获取单一元素:Ext.dom.Element / 252
6.2.1 从错误开始 / 252
6.2.2 使用Ext.get获取元素 / 253
6.2.3 使用Ext.fly获取元素 / 256
6.2.4 使用Ext.getDom获取元素 / 257
6.2.5 获取元素的总结 / 258
6.3 元素生成器:Ext.dom.Helper / 258
6.3.1 概述 / 258
6.3.2 使用createHtml或markup方法生成HTML代码 / 258
6.3.3 使用createDOM方法生成DOM对象 / 261
6.3.4 使用createTemplate方法创建模板 / 263
6.3.5 Helper对象的使用方法 / 263
6.4 元素的操作 / 273
6.5 获取元素集合:Ext.CompositeElementLite与Ext.CompositeElement / 277
6.5.1 使用Ext.select获取元素集合 / 277
6.5.2 Ext.dom.CompositeElement与Ext.dom.CompositeElementLite的区别 / 279
6.5.3 操作元素集合 / 279
6.6 综合实例:可折叠的面板Accordion / 280
6.7 本章小结 / 283
第7章 数据交互 / 284
7.1 数据交互基础 / 284
7.1.1 Ajax概述 / 284
7.1.2 封装Ajax:Ext.data.Connection与Ext.Ajax / 284
7.1.3 使用Ajax / 291
7.1.4 跨域获取数据:Ext.data.JsonP / 295
7.1.5 为Element对象提供加载功能:Ext.ElementLoader / 295
7.1.6 为组件提供加载功能:Ext.ComponentLoader / 296
7.2 代理 / 299
7.2.1 代理概述 / 299
7.2.2 基本的代理:Ext.data.proxy.Proxy / 300
7.2.3 进行批量操作:Ext.data.Batch与Ext.data.Operation / 303
7.2.4 服务器端代理:Ext.data.proxy.Server / 305
7.2.5 使用Ajax处理数据的代理:Ext.data.proxy.Ajax与Ext.data.proxy.Rest / 308
7.2.6 跨域处理数据的代理:Ext.data.proxy.JsonP / 312
7.2.7 为Ext.Direct服务的代理:Ext.data.proxy.Direct / 312
7.2.8 客户端代理:Ext.data.proxy.Client / 314
7.2.9 从变量中提取数据的代理:Ext.data.proxy.Memory / 314
7.2.10 使用浏览器存储的代理:Ext.data.WebStorageProxy、Ext.data. SessionStorageProxy和Ext.data.proxy.LocalStorage / 314
7.3 读取和格式化数据 / 315
7.3.1 概述 / 315
7.3.2 数据的转换过程:Ext.data.reader.Xml、Ext.data.reader.Json和Ext.data.reader.Array / 315
7.3.3 Reader对象的配置项 / 321
7.3.4 格式化提交数据:Ext.data.writer.Writer、Ext.data.writer.JSON和Ext.data. writer.Xml / 322
7.3.5 Writer对象的配置项 / 325
7.4 数据模型 / 326
7.4.1 概述 / 326
7.4.2 数据类型及排序类型:Ext.data.Types与Ext.data.SortTypes / 326
7.4.3 数据模型的骨架——字段:Ext.data.Field / 330
7.4.4 数据集:Ext.util.AbstractMixedCollection与Ext.util.MixedCollection / 330
7.4.5 数据验证及错误处理:Ext.data.validations与Ext.data.Errors / 332
7.4.6 模型的关系:Ext.data.Association、Ext.data.HasManyAssociation和Ext.data.BelongsToAssociation / 334
7.4.7 管理数据模型:Ext.AbstractManager与Ext.ModelManager / 336
7.4.8 定义数据模型:Ext.data.Model / 336
7.4.9 数据模型的定义过程 / 337
7.4.10 数据模型的创建 / 340
7.4.11 数据模型的配置项、属性和方法 / 343
7.5 Store / 344
7.5.1 概述 / 344
7.5.2 Store对象的实例化过程 / 345
7.5.3 TreeStore对象的实例化过程 / 348
7.5.4 Ext.data.Store加载数据的方法 / 350
7.5.5 Ext.data.TreeStore加载数据的方法 / 354
7.5.6 Store的配置项 / 358
7.5.7 Store的分页 / 359
7.5.8 Store的排序:Ext.util.Sorter与Ext.util.Sortable / 360
7.5.9 Store的过滤:Ext.util.Filter / 363
7.5.10 Store的分组:Ext.util.Grouper / 363
7.5.11 树节点:Ext.data.NodeInterface与Ext.data.Tree / 364
7.5.12 Store的方法 / 366
7.5.13 Store的事件 / 368
7.5.14 Store管理器:Ext.data.StoreManager / 369
7.6 综合实例 / 369
7.6.1 远程读取JSON数据 / 369
7.6.2 读取XML数据 / 378
7.6.3 Store的数据操作 / 379
7.7 本章小结 / 384
第8章 模板与组件基础 / 385
8.1 模板 / 385
8.1.1 模板概述 / 385
8.1.2 Ext.Template的创建与编译 / 385
8.1.3 格式化输出数据:Ext.String、Ext.Number、Ext.Date和Ext.util.Format / 389
8.1.4 超级模板:Ext.XTemplate(包括Ext.XTemplateParser和Ext.XTemplateCompiler) / 393
8.1.5 模板的方法 / 396
8.2 组件的基础知识 / 396
8.2.1 概述 / 396
8.2.2 组件类的整体架构 / 397
8.2.3 布局类的整体架构 / 402
8.2.4 组件的创建流程 / 403
8.2.5 常用的组件配置项、属性、方法和事件 / 415
8.3 为组件添加功能 / 418
8.3.1 为元素添加阴影:Ext.Shadow与Ext.ShadowPool / 418
8.3.2 为组件提供阴影和shim功能:Ext.Layer / 419
8.3.3 让组件实现浮动功能:Ext.util.Floating / 420
8.3.4 记录组件状态:Ext.state.Stateful / 420
8.3.5 实现调整大小功能:Ext.resizer.Resizer与Ext.resizer.ResizeTracker / 420
8.3.6 为组件提供拖动功能:Ext.util.ComponentDragger / 421
8.3.7 为组件实现动画功能:Ext.util.Animate / 422
8.3.8 其他的组件辅助功能类 / 423
8.4 组件的管理 / 423
8.4.1 组件管理及查询:Ext.ComponentManager与Ext.ComponentQuery / 423
8.4.2 焦点管理:Ext.FocusManager / 424
8.4.3 z-order管理:Ext.ZindexManager与Ext.WindowManager / 425
8.4.4 状态管理:Ext.state.Manager、Ext.state.Provider、Ext.state.Local-StorageProvider和Ext.state.CookieProvider / 426
8.5 综合实例 / 426
8.5.1 使用子模板 / 426
8.5.2 递归调用模板 / 428
8.6 本章小结 / 429
第9章 容器、面板、布局和视图 / 430
9.1 容器与布局的关系 / 430
9.2 容器 / 431
9.2.1 容器的创建过程:Ext.container.AbstractContainer与Ext.container.Container / 431
9.2.2 Ext.container.AbstractContainer和Ext.container.Container的配置项、属性、方法和事件 / 434
9.2.3 将body元素作为容器:Ext.container.Viewport / 435
9.3 面板 / 436
9.3.1 面板的结构 / 436
9.3.2 构件的放置:dockedItems / 438
9.3.3 面板标题栏构件:Ext.panel.Header与Ext.panel.Tool / 438
9.3.4 记录和恢复面板属性:Ext.util.Memento / 439
9.3.5 面板常用的配置项、方法和事件 / 439
9.4 布局 / 441
9.4.1 布局概述 / 441
9.4.2 布局的运行流程:Ext.layout.Layout / 441
9.4.3 容器类布局基类:Ext.layout.container.Container / 442
9.4.4 盒子布局、垂直布局与水平布局:Ext.layout.container.Box、Ext.layout.container.VBox与Ext.layout.container.HBox / 442
9.4.5 为盒子模型提供调整大小的功能:Ext.resizer.Splitter / 445
9.4.6 手风琴布局:Ext.layout.container.Accordion / 447
9.4.7 锚固布局:Ext.layout.container.Anchor / 448
9.4.8 绝对定位布局:Ext.layout.container.Absolute / 450
9.4.9 边框布局:Ext.layout.container.Border / 451
9.4.10 自动布局:Ext.layout.container.Auto / 453
9.4.11 表格布局:Ext.layout.container.Table / 454
9.4.12 列布局:Ext.layout.container.Column / 455
9.4.13 自适应布局:Ext.layout.container.AbstractFit与Ext.layout.container.Fit / 456
9.4.14 卡片布局:Ext.layout.container.AbstractCard与Ext.layout.container.Card / 456
9.5 标签面板 / 458
9.5.1 标签面板的构成及其运行流程:Ext.tab.Panel、Ext.tab.Bar与Ext.tab.Tab / 458
9.5.2 标签面板的配置项、属性、方法和事件 / 462
9.5.3 使用标签页 / 463
9.5.4 可重用的标签页 / 465
9.6 视图与选择模型 / 465
9.6.1 视图与选择模型概述 / 465
9.6.2 视图的运行流程:Ext.view.AbstractView与Ext.view.View / 466
9.6.3 选择模型的工作流程 / 475
9.6.4 选择模型的配置项、属性、方法和事件 / 480
9.6.5 视图的配置项、属性、方法和事件 / 482
9.6.6 使用视图 / 484
9.7 页面布局设计 / 491
9.8 综合实例 / 492
9.8.1 布局设计实例:仿Eclipse界面 / 492
9.8.2 在单页面应用中使用卡片布局实现“页面”切换 / 496
9.9 本章小结 / 498
第10章 重构后的Grid / 500
10.1 Grid的基类及其构成 / 500
10.1.1 概述 / 500
10.1.2 表格面板的运行流程:Ext.panel.Table / 500
10.1.3 表格视图的运行流程:Ext.view.Table与Ext.view.TableChunker / 505
10.1.4 列标题容器的运行流程:Ext.grid.header.Container / 508
10.1.5 列标题的运行流程:Ext.grid.column.Column / 510
10.1.6 虚拟滚动条的工作原理:Ext.grid.PagingScroller / 511
10.1.7 锁定列的运行流程:Ext.grid.Lockable与Ext.grid.LockingView / 516
10.2 使用Grid / 520
10.2.1 最简单的Grid / 520
10.2.2 列的配置项 / 521
10.2.3 自定义单元格的显示格式 / 523
10.2.4 通过列对象定义单元格的显示格式 / 525
10.2.5 设置行的背景颜色 / 532
10.2.6 列标题的分组 / 533
10.2.7 使用锁定列 / 534
10.2.8 Grid的配置项、属性、方法和事件 / 535
10.3 Grid的附加功能 / 537
10.3.1 概述 / 537
10.3.2 附加功能基类:Ext.grid.featrue.Featrue / 537
10.3.3 为行添加附加信息:Ext.grid.featrue.RowBody / 538
10.3.4 数据汇总功能:Ext.grid.featrue.AbstractSummary与Ext.grid.featrue. Summary / 539
10.3.5 分组功能:Ext.grid.featrue.Grouping / 543
10.3.6 分组汇总功能:Ext.grid.featrue.GroupingSummary / 545
10.4 可编辑的Grid / 546
10.4.1 概述 / 546
10.4.2 Grid实现可编辑功能的运行流程:Ext.grid.plugin.Editing / 547
10.4.3 单元格编辑的运行流程:Ext.grid.plugin.CellEditing、Ext.grid.CellEditor与Ext.Editor / 550
10.4.4 行编辑的运行流程:Ext.grid.plugin.RowEditing与Ext.grid.RowEditor / 556
10.4.5 在Grid中使用单元格编辑模式 / 561
10.4.6 在Grid中使用行编辑模式 / 562
10.4.7 Grid编辑插件的配置项、属性、方法和事件 / 563
10.5 关于列表视图:ListView / 564
10.6 属性Grid / 564
10.6.1 概述 / 564
10.6.2 使用属性Grid / 564
10.6.3 自定义编辑组件 / 565
10.6.4 PropertyGrid的配置项、属性、方法和事件 / 566
10.7 综合实例 / 567
10.7.1 使用不同选择模型的Grid以及设置默认选择行 / 567
10.7.2 Grid的本地排序和过滤 / 569
10.7.3 使用分页工具条(PagingToolbar)实现远程分页、排序和过滤 / 570
10.7.4 使用分页滚动条(PagingScroller)实现远程分页、排序和过滤 / 574
10.7.5 使用CellEditing实现数据的增删改 / 578
10.7.6 使用RowEditing实现数据的增删改 / 587
10.7.7 主从表的显示 / 589
10.8 本章小结 / 595
第11章 与Grid同源的树 / 597
11.1 树的构成 / 597
11.1.1 概述 / 597
11.1.2 树面板的运行流程:Ext.tree.Panel / 597
11.1.3 TreeStore的运行流程:Ext.data.TreeStore / 600
11.1.4 TreeColumn的运行流程:Ext.tree.Column / 602
11.1.5 视图的运行流程:Ext.tree.View与Ext.data.NodeStore / 602
11.1.6 树的选择模型:Ext.selection.TreeModel / 603
11.2 树的使用 / 603
11.2.1 一个最简单的树 / 603
11.2.2 树节点的默认字段 / 603
11.2.3 为树节点添加附加字段 / 604
11.2.4 显示多列数据(TreeGrid效果) / 605
11.2.5 在树中使用复选框 / 605
11.2.6 树的配置项、属性、方法和事件 / 607
11.3 综合实例 / 608
11.3.1 树的远程加载 / 608
11.3.2 树的动态加载及节点维护 / 610
11.3.3 XML树及节点维护 / 617
11.3.4 使用树动态控制Grid的显示 / 622
11.4 本章小结 / 625
第12章 表单 / 626
12.1 表单的构成及操作 / 626
12.1.1 表单面板的运行流程:Ext.form.Panel与Ext.form.FieldAncestor / 626
12.1.2 表单面板的配置项、属性、方法和事件 / 628
12.1.3 表单的管理:Ext.form.Basic / 629
12.1.4 BasicForm的配置项、属性、方法和事件 / 635
12.1.5 表单的操作:Ext.form.action.Action / 636
12.1.6 加载操作的运行流程:Ext.form.action.Load与Ext.form.action.DirectLoad / 637
12.1.7 提交操作的运行流程:Ext.form.action.Submit、Ext.form.action.DirectSubmit与Ext.form.action.StandardSubmit / 641
12.1.8 字段的构成 / 643
12.1.9 BaseField的配置项、属性、方法和事件 / 643
12.1.10 常用的验证函数:Ext.form.field.VTypes / 647
12.2 使用字段 / 647
12.3 使用Trigger类字段 / 664
12.3.1 具有单击功能的字段:Ext.form.field.Trigger / 664
12.3.2 实现微调功能的Spinner字段 / 665
12.3.3 使用NumberField字段 / 666
12.3.4 下拉选择类字段的基类:Ext.form.field.Picker / 667
12.3.5 使用DateField字段 / 667
12.3.6 使用TimeField字段 / 669
12.4 使用ComboBox字段 / 669
12.4.1 概述 / 669
12.4.2 BoundList对象的运行流程 / 670
12.4.3 ComboBox字段的配置项、属性、方法和事件 / 671
12.4.4 最简单的ComboBox / 672
12.4.5 自定义列表显示格式的ComboBox / 673
12.4.6 动态调整ComboBox的列表数据 / 674
12.4.7 实现ComboBox的联动 / 676
12.4.8 使用ComboBox的查询功能 / 684
12.4.9 设置ComboBox的默认值 / 688
12.5 表单的验证和加载数据 / 690
12.5.1 表单的验证及错误显示方式 / 690
12.5.2 为表单加载数据 / 695
12.6 在表单中使用布局 / 701
12.6.1 分列显示表单的字段 / 701
12.6.2 使用Fieldset作为列容器 / 703
12.6.3 使用两列布局加HtmlEditor的表单 / 704
12.6.4 在表单中使用标签页 / 705
12.7 综合实例:实现Products表的管理功能 / 706
12.8 本章小结 / 715
第13章 窗口 / 716
13.1 窗口:Ext.window.Window. / 716
13.1.1 窗口的构成 / 716
13.1.2 窗口的配置项、属性、方法和事件 / 716
13.1.3 使用窗口 / 718
13.1.4 在窗口内使用布局 / 719
13.2 信息提示窗口:Ext.window.MessageBox / 720
13.2.1 概述 / 720
13.2.2 信息提示窗口的构成 / 720
13.2.3 使用信息提示窗口 / 722
13.2.4 信息提示窗口按钮的本地化 / 723
13.2.5 使用alert方法 / 724
13.2.6 使用confirm方法 / 724
13.2.7 使用progress方法 / 725
13.2.8 使用prompt方法 / 726
13.2.9 使用wait方法 / 727
13.2.10 使用信息提示窗口要注意的问题 / 727
13.3 综合实例:实现登录窗口 / 729
13.4 本章小结 / 733
第14章 按钮、菜单与工具条 / 734
14.1 按钮 / 734
14.1.1 按钮的构成:Ext.button.Button / 734
14.1.2 按钮的配置项、属性、方法和事件 / 734
14.1.3 使用按钮 / 736
14.1.4 带分割线的按钮:Ext.button.Split / 737
14.1.5 多状态按钮:Ext.button.Cycle / 737
14.1.6 按钮组:Ext.container.ButtonGroup / 738
14.2 菜单及菜单项 / 739
14.2.1 Ext JS的菜单(Menu对象)是什么 / 739
14.2.2 菜单管理器:Ext.menu.Manager / 740
14.2.3 菜单项:Ext.menu.Item / 740
14.2.4 可复选的菜单项:Ext.menu.CheckItem / 741
14.2.5 菜单分隔条:Ext.menu.Separator / 741
14.2.6 颜色选择器菜单:Ext.menu.ColorPicker / 742
14.2.7 日期选择菜单:Ext.menu.DatePicker / 742
14.2.8 使用菜单 / 742
14.3 工具栏及工具栏组件 / 743
14.3.1 工具栏:Ext.toolbar.Toolbar / 743
14.3.2 非交互式工具栏条目的基类:Ext.toolbar.Item / 743
14.3.3 文本项:Ext.toolbar.TextItem / 744
14.3.4 填充项:Ext.toolbar.Fill / 744
14.3.5 工具栏分隔条:Ext.toolbar.Separator / 744
14.3.6 空白项:Ext.toolbar.Spacer / 744
14.3.7 分页工具栏:Ext.toolbar.Paging / 744
14.3.8 使用工具栏 / 747
14.4 使用Ext.Action / 747
14.4.1 概述 / 747
14.4.2 Action对象配置项和方法 / 748
14.4.3 使用示例 / 748
14.5 综合实例:在Grid中使用右键菜单 / 750
14.6 本章小结 / 752
第15章 图形与图表 / 753
15.1 基础知识 / 753
15.1.1 SVG简介 / 753
15.1.2 VML简介 / 754
15.2 图形介绍 / 755
15.2.1 概述 / 755
15.2.2 画布的工作流程:Ext.draw.Component / 755
15.2.3 图形引擎及接口:Ext.draw.Surface、Ext.draw.engine.Svg和Ext.draw.engine.Vml / 757
15.2.4 画笔:Ext.draw.Sprite / 760
15.2.5 图层:Ext.draw.CompositeSprite / 760
15.2.6 调色板:Ext.draw.Color / 760
15.2.7 辅助对象:Ext.draw.Draw与Ext.draw.Matrix / 760
15.3 使用图形功能 / 760
15.3.1 简单的开始 / 760
15.3.2 DrawComponent对象的配置项、属性、方法和事件 / 761
15.3.3 Surface对象的配置项、属性、方法和事件 / 761
15.3.4 DrawSprite对象的配置项、属性、方法和事件 / 762
15.3.5 CompositeSprite对象的配置项、属性、方法和事件 / 763
15.3.6 使用基本图形 / 764
15.3.7 使用图片 / 765
15.3.8 使用路径 / 766
15.3.9 移动、旋转和缩放图形 / 767
15.3.10 使用渐变效果 / 770
15.3.11 使用图层 / 771
15.4 图表介绍 / 772
15.4.1 概述 / 772
15.4.2 图表的工作流程 / 773
15.5 使用图表 / 776
15.5.1 从一个简单例子开始 / 776
15.5.2 坐标轴的配置项 / 777
15.5.3 Series对象的配置项、属性、方法和事件 / 779
15.5.4 折线图的配置项 / 780
15.5.5 显示多个折线图及使用图例 / 782
15.5.6 使用面积图 / 783
15.5.7 简单条形图(Bar和Column Chart)及使用标签(Label对象) / 785
15.5.8 堆积条形图 / 787
15.5.9 分组条形图 / 788
15.5.10 自定义条形颜色 / 789
15.5.11 使用散点图 / 789
15.5.12 使用饼图 / 791
15.5.13 自定义饼块颜色 / 792
15.5.14 使用表盘图 / 792
15.5.15 使用雷达图 / 795
15.5.16 使用时间轴 / 796
15.5.17 实现实时动态的图表 / 797
15.5.18 使用组合图 / 800
15.5.19 在图表中使用背景 / 801
15.5.20 在图表中自定义主题 / 803
15.6 本章小结 / 805
第16章 其他组件及实用功能 / 806
16.1 其他组件 / 806
16.2 使用滑块 / 812
16.3 使用提示信息 / 814
16.4 实用功能 / 822
16.5 本章小结 / 826
第17章 可简化通信的Ext.Direct / 827
17.1 准备工作 / 827
17.2 Ext.Direct的工作原理及构成 / 827
17.2.1 工作原理 / 827
17.2.2 Ext.Direct的构成 / 828
17.2.3 RemotingProvider对象的具体工作流程 / 829
17.2.4 PollingProvider对象的具体工作流程 / 838
17.3 配置Ext.Direct的使用环境 / 839
17.3.1 概述 / 839
17.3.2 .NET环境的配置 / 839
17.3.3 Java环境的配置 / 842
17.4 使用Ext.Direct / 846
17.4.1 概述 / 846
17.4.2 使用DirectProxy及进行CURD操作 / 846
17.4.3 使用Ext.Direct实现树的动态加载及节点维护 / 854
17.4.4 使用DirectLoad为表单加载数据 / 858
17.4.5 使用DirectSubmit提交表单及使用Session / 863
17.4.6 使用Ext.Direct上传文件 / 866
17.4.7 使用PollingProvider对象 / 868
17.4.8 错误处理 / 871
17.5 本章小结 / 872
第18章 动画功能 / 873
18.1 动画功能的构成及工作流程 / 873
18.1.1 概述 / 873
18.1.2 动画功能的工作流程:Ext.fx.Anim / 874
18.1.3 分步动画的工作流程:Ext.fx.Animator / 877
18.2 使用动画 / 880
18.2.1 由最简单的动画开始 / 880
18.2.2 过渡效果使用的功能函数介绍 / 880
18.2.3 使用分步动画 / 882
18.2.4 注意的问题 / 883
18.3 在Element对象中使用动画 / 883
18.4 本章小结 / 888
第19章 拖放功能 / 889
19.1 拖放功能的构成及工作流程 / 889
19.1.1 概述 / 889
19.1.2 DragDropManager对象的工作流程 / 891
19.1.3 注册节点:Ext.dd.Registry / 893
19.1.4 一般拖动功能的工作流程:Ext.dd.DD / 894
19.1.5 DragSource对象的工作流程 / 897
19.1.6 DropTarget对象的工作流程 / 898
19.1.7 DragZone对象的工作流程 / 899
19.1.8 DropZone对象的工作流程 / 899
19.2 使用拖放功能 / 899
19.2.1 最简单的拖动效果 / 899
19.2.2 使用DragSource对象与DropTarget对象 / 900
19.2.3 使用DragZone对象与DropZone对象(使用Registry对象) / 902
19.2.4 使用DragZone对象与DropZone对象(不使用Registry对象) / 903
19.2.5 通过拖动实现节点排序 / 904
19.2.6 使用GridViewDropZonePlugin插件 / 905
19.2.7 使用TreeViewDragDropPlugin插件 / 907
19.2.8 关于Grid和Tree拖动后的数据保存问题 / 910
19.3 本章小结 / 910
第20章 扩展与插件 / 911
20.1 扩展与插件的区别 / 911
20.2 扩展与插件如何选择 / 911
20.3 如何编写扩展 / 911
20.3.1 命名空间 / 911
20.3.2 定义扩展 / 912
20.3.3 定义别名 / 912
20.3.4 定义备用名 / 912
20.3.5 要求加载的类:requires与uses / 912
20.3.6 混入功能 / 913
20.3.7 构造函数与initComponent方法 / 913
20.3.8 静态属性和方法与单件模式 / 913
20.3.9 可自动生成set和get方法的属性与initConfig方法 / 914
20.3.10 在扩展中常用的方法 / 914
20.3.11 编写扩展:TreeComboBox / 914
20.4 如何编写插件 / 920
20.4.1 概述 / 920
20.4.2 AbstractPlugin对象 / 921
20.4.3 插件的别名 / 921
20.4.4 编写插件:RowColor / 922
20.5 扩展和插件介绍 / 923
20.5.1 概述 / 923
20.5.2 本地分页代理:Ext.ux.data.PagingMemoryProxy / 923
20.5.3 标签滚动菜单:Ext.ux.TabScrollerMenu / 925
20.5.4 编辑器TinyMCE / 926
20.6 本章小结 / 928
第21章 主题开发 / 929
21.1 准备工作 / 929
21.1.1 安装Ruby / 929
21.1.2 安装Compass / 930
21.1.3 SASS介绍 / 931
21.2 为Ext JS 4创建新主题 / 933
21.2.1 概述 / 933
21.2.2 目录结构 / 933
21.2.3 修改配置 / 933
21.2.4 编译 / 935
21.2.5 测试主题 / 935
21.3 通过ui配置项设置组件样式 / 937
21.4 本章小结 / 937
第22章 MVC应用架构 / 938
22.1 MVC应用架构的构成及工作流程 / 938
22.1.1 构成 / 938
22.1.2 控制器的工作流程:Ext.app.Controller / 938
22.1.3 Application对象的工作流程 / 940
22.2 一步一步实现MVC框架 / 942
22.2.1 概述 / 942
22.2.2 创建目录 / 942
22.2.3 创建首页 / 942
22.2.4 创建启动脚本:app.js / 943
22.2.5 定义登录对话框 / 944
22.2.6 创建应用脚本:Application.js / 948
22.2.7 创建Viewport视图 / 949
22.2.8 菜单视图及控制器 / 950
22.2.9 实现订单管理 / 952
22.2.10 实现产品管理 / 958
22.2.11 示例效果 / 969
22.3 本章小结 / 970
附录 简写类名与Ext JS类名对照表 / 971
第1章 Ext JS 4开发入门 / 1
1.1 学习Ext JS必需的基础知识 / 1
1.2 JSON概述 / 3
1.2.1 认识JSON / 3
1.2.2 JSON的结构 / 3
1.2.3 JSON的例子 / 4
1.2.4 在JavaScript中使用JSON / 4
1.2.5 在.NET中使用JSON / 8
1.2.6 在Java中使用JSON / 12
1.2.7 更多有关JSON的信息 / 15
1.3 Ext JS 4概述 / 15
1.4 Ext JS的开发工具的获取、安装与配置介绍 / 18
1.4.1 Ext Designer / 18
1.4.2 在Visual Studio中实现智能提示 / 23
1.4.3 Spket / 28
1.4.4 在Eclipse中实现智能提示 / 32
1.5 如何获得帮助 / 32
1.6 本章小结 / 33
第2章 从“Hello World”开始 / 34
2.1 获取Ext JS 4 / 34
2.2 配置使用Ext JS库 / 35
2.3 编写“Hello World”程序 / 37
2.4 关于Ext.onReady / 38
2.5 关于Ext.BLANK_IMAGE_URL / 40
2.6 关于字体 / 42
2.7 Ext JS 4语法 / 42
2.8 本地化 / 60
2.9 为本书示例准备一个模板 / 60
2.10 本章小结 / 61
第3章 调试工具及技巧 / 62
3.1 使用Firebug进行调试 / 62
3.2 在IE中调试 / 76
3.2.1 使用Debugbar和Companion.js调试 / 76
3.2.2 使用IEtester测试 / 80
3.2.3 在IE 8或IE 9中调试 / 83
3.3 在Chrome中调试 / 84
3.4 调试工具的总结 / 84
3.5 调试技巧 / 85
3.6 本章小结 / 89
第4章 Ext JS的基础架构 / 90
4.1 Ext JS框架的命名空间:Ext / 90
4.1.1 概述 / 90
4.1.2 apply和applyIf方法 / 90
4.1.3 不推荐的extend方法 / 92
4.1.4 数据及其类型检测 / 95
4.1.5 其他的基础方法 / 99
4.2 为框架顺利运行提供支持 / 107
4.2.1 平台检测工具:Ext.is / 107
4.2.2 当前运行环境检测工具:Ext.supports / 109
4.3 Ext JS的静态方法 / 112
4.3.1 概述 / 112
4.3.2 Ext.Object中的静态方法 / 113
4.3.3 Ext.Function中的静态方法 / 120
4.3.4 Ext.Array中的静态方法 / 127
4.3.5 Ext.Error中的静态方法 / 133
4.4 深入了解类的创建及管理 / 135
4.4.1 开始创建类 / 135
4.4.2 创建类的类:Ext.Class / 137
4.4.3 所有继承类的基类:Ext.Base / 151
4.4.4 实现动态加载:Ext.Loader / 151
4.4.5 管理类的类:Ext.ClassManager / 159
4.4.6 类创建的总结 / 161
4.5 动态加载的路径设置 / 163
4.6 综合实例:页面计算器 / 165
4.7 本章小结 / 169
第5章 Ext JS的事件及其应用 / 170
5.1 概述 / 170
5.2 浏览器事件 / 170
5.2.1 绑定浏览器事件的过程:Ext.EventManager / 170
5.2.2 封装浏览器事件:Ext.EventObject / 179
5.2.3 移除浏览器事件 / 181
5.3 内部事件 / 184
5.3.1 内部事件对象:Ext.util.Event / 184
5.3.2 为组件添加事件接口:Ext.util.Observable / 188
5.3.3 为组件绑定事件 / 189
5.3.4 内部事件的触发过程 / 192
5.3.5 移除事件 / 194
5.4 特定功能的事件对象 / 196
5.4.1 延时任务:Ext.util.DelayedTask / 196
5.4.2 一般任务:Ext.util.TaskRunner与Ext.TaskManager / 198
5.4.3 封装好的单击事件:Ext.util.ClickRepeater / 200
5.5 键盘事件 / 201
5.5.1 为元素绑定键盘事件:Ext.util.KeyMap / 201
5.5.2 键盘导航:Ext.util.KeyNav / 204
5.6 综合实例:股票数据的实时更新 / 205
5.7 本章小结 / 214
第6章 选择器与DOM操作 / 215
6.1 Ext JS的选择器:Ext.DomQuery / 215
6.1.1 选择器的作用 / 215
6.1.2 使用Ext.query选择页面元素 / 215
6.1.3 基本选择符 / 223
6.1.4 属性选择符 / 229
6.1.5 CSS属性值选择符 / 234
6.1.6 伪类选择符 / 235
6.1.7 扩展选择器 / 248
6.1.8 Ext.DomQuery的使用方法 / 249
6.1.9 Ext JS选择器的总结 / 252
6.2 获取单一元素:Ext.dom.Element / 252
6.2.1 从错误开始 / 252
6.2.2 使用Ext.get获取元素 / 253
6.2.3 使用Ext.fly获取元素 / 256
6.2.4 使用Ext.getDom获取元素 / 257
6.2.5 获取元素的总结 / 258
6.3 元素生成器:Ext.dom.Helper / 258
6.3.1 概述 / 258
6.3.2 使用createHtml或markup方法生成HTML代码 / 258
6.3.3 使用createDOM方法生成DOM对象 / 261
6.3.4 使用createTemplate方法创建模板 / 263
6.3.5 Helper对象的使用方法 / 263
6.4 元素的操作 / 273
6.5 获取元素集合:Ext.CompositeElementLite与Ext.CompositeElement / 277
6.5.1 使用Ext.select获取元素集合 / 277
6.5.2 Ext.dom.CompositeElement与Ext.dom.CompositeElementLite的区别 / 279
6.5.3 操作元素集合 / 279
6.6 综合实例:可折叠的面板Accordion / 280
6.7 本章小结 / 283
第7章 数据交互 / 284
7.1 数据交互基础 / 284
7.1.1 Ajax概述 / 284
7.1.2 封装Ajax:Ext.data.Connection与Ext.Ajax / 284
7.1.3 使用Ajax / 291
7.1.4 跨域获取数据:Ext.data.JsonP / 295
7.1.5 为Element对象提供加载功能:Ext.ElementLoader / 295
7.1.6 为组件提供加载功能:Ext.ComponentLoader / 296
7.2 代理 / 299
7.2.1 代理概述 / 299
7.2.2 基本的代理:Ext.data.proxy.Proxy / 300
7.2.3 进行批量操作:Ext.data.Batch与Ext.data.Operation / 303
7.2.4 服务器端代理:Ext.data.proxy.Server / 305
7.2.5 使用Ajax处理数据的代理:Ext.data.proxy.Ajax与Ext.data.proxy.Rest / 308
7.2.6 跨域处理数据的代理:Ext.data.proxy.JsonP / 312
7.2.7 为Ext.Direct服务的代理:Ext.data.proxy.Direct / 312
7.2.8 客户端代理:Ext.data.proxy.Client / 314
7.2.9 从变量中提取数据的代理:Ext.data.proxy.Memory / 314
7.2.10 使用浏览器存储的代理:Ext.data.WebStorageProxy、Ext.data. SessionStorageProxy和Ext.data.proxy.LocalStorage / 314
7.3 读取和格式化数据 / 315
7.3.1 概述 / 315
7.3.2 数据的转换过程:Ext.data.reader.Xml、Ext.data.reader.Json和Ext.data.reader.Array / 315
7.3.3 Reader对象的配置项 / 321
7.3.4 格式化提交数据:Ext.data.writer.Writer、Ext.data.writer.JSON和Ext.data. writer.Xml / 322
7.3.5 Writer对象的配置项 / 325
7.4 数据模型 / 326
7.4.1 概述 / 326
7.4.2 数据类型及排序类型:Ext.data.Types与Ext.data.SortTypes / 326
7.4.3 数据模型的骨架——字段:Ext.data.Field / 330
7.4.4 数据集:Ext.util.AbstractMixedCollection与Ext.util.MixedCollection / 330
7.4.5 数据验证及错误处理:Ext.data.validations与Ext.data.Errors / 332
7.4.6 模型的关系:Ext.data.Association、Ext.data.HasManyAssociation和Ext.data.BelongsToAssociation / 334
7.4.7 管理数据模型:Ext.AbstractManager与Ext.ModelManager / 336
7.4.8 定义数据模型:Ext.data.Model / 336
7.4.9 数据模型的定义过程 / 337
7.4.10 数据模型的创建 / 340
7.4.11 数据模型的配置项、属性和方法 / 343
7.5 Store / 344
7.5.1 概述 / 344
7.5.2 Store对象的实例化过程 / 345
7.5.3 TreeStore对象的实例化过程 / 348
7.5.4 Ext.data.Store加载数据的方法 / 350
7.5.5 Ext.data.TreeStore加载数据的方法 / 354
7.5.6 Store的配置项 / 358
7.5.7 Store的分页 / 359
7.5.8 Store的排序:Ext.util.Sorter与Ext.util.Sortable / 360
7.5.9 Store的过滤:Ext.util.Filter / 363
7.5.10 Store的分组:Ext.util.Grouper / 363
7.5.11 树节点:Ext.data.NodeInterface与Ext.data.Tree / 364
7.5.12 Store的方法 / 366
7.5.13 Store的事件 / 368
7.5.14 Store管理器:Ext.data.StoreManager / 369
7.6 综合实例 / 369
7.6.1 远程读取JSON数据 / 369
7.6.2 读取XML数据 / 378
7.6.3 Store的数据操作 / 379
7.7 本章小结 / 384
第8章 模板与组件基础 / 385
8.1 模板 / 385
8.1.1 模板概述 / 385
8.1.2 Ext.Template的创建与编译 / 385
8.1.3 格式化输出数据:Ext.String、Ext.Number、Ext.Date和Ext.util.Format / 389
8.1.4 超级模板:Ext.XTemplate(包括Ext.XTemplateParser和Ext.XTemplateCompiler) / 393
8.1.5 模板的方法 / 396
8.2 组件的基础知识 / 396
8.2.1 概述 / 396
8.2.2 组件类的整体架构 / 397
8.2.3 布局类的整体架构 / 402
8.2.4 组件的创建流程 / 403
8.2.5 常用的组件配置项、属性、方法和事件 / 415
8.3 为组件添加功能 / 418
8.3.1 为元素添加阴影:Ext.Shadow与Ext.ShadowPool / 418
8.3.2 为组件提供阴影和shim功能:Ext.Layer / 419
8.3.3 让组件实现浮动功能:Ext.util.Floating / 420
8.3.4 记录组件状态:Ext.state.Stateful / 420
8.3.5 实现调整大小功能:Ext.resizer.Resizer与Ext.resizer.ResizeTracker / 420
8.3.6 为组件提供拖动功能:Ext.util.ComponentDragger / 421
8.3.7 为组件实现动画功能:Ext.util.Animate / 422
8.3.8 其他的组件辅助功能类 / 423
8.4 组件的管理 / 423
8.4.1 组件管理及查询:Ext.ComponentManager与Ext.ComponentQuery / 423
8.4.2 焦点管理:Ext.FocusManager / 424
8.4.3 z-order管理:Ext.ZindexManager与Ext.WindowManager / 425
8.4.4 状态管理:Ext.state.Manager、Ext.state.Provider、Ext.state.Local-StorageProvider和Ext.state.CookieProvider / 426
8.5 综合实例 / 426
8.5.1 使用子模板 / 426
8.5.2 递归调用模板 / 428
8.6 本章小结 / 429
第9章 容器、面板、布局和视图 / 430
9.1 容器与布局的关系 / 430
9.2 容器 / 431
9.2.1 容器的创建过程:Ext.container.AbstractContainer与Ext.container.Container / 431
9.2.2 Ext.container.AbstractContainer和Ext.container.Container的配置项、属性、方法和事件 / 434
9.2.3 将body元素作为容器:Ext.container.Viewport / 435
9.3 面板 / 436
9.3.1 面板的结构 / 436
9.3.2 构件的放置:dockedItems / 438
9.3.3 面板标题栏构件:Ext.panel.Header与Ext.panel.Tool / 438
9.3.4 记录和恢复面板属性:Ext.util.Memento / 439
9.3.5 面板常用的配置项、方法和事件 / 439
9.4 布局 / 441
9.4.1 布局概述 / 441
9.4.2 布局的运行流程:Ext.layout.Layout / 441
9.4.3 容器类布局基类:Ext.layout.container.Container / 442
9.4.4 盒子布局、垂直布局与水平布局:Ext.layout.container.Box、Ext.layout.container.VBox与Ext.layout.container.HBox / 442
9.4.5 为盒子模型提供调整大小的功能:Ext.resizer.Splitter / 445
9.4.6 手风琴布局:Ext.layout.container.Accordion / 447
9.4.7 锚固布局:Ext.layout.container.Anchor / 448
9.4.8 绝对定位布局:Ext.layout.container.Absolute / 450
9.4.9 边框布局:Ext.layout.container.Border / 451
9.4.10 自动布局:Ext.layout.container.Auto / 453
9.4.11 表格布局:Ext.layout.container.Table / 454
9.4.12 列布局:Ext.layout.container.Column / 455
9.4.13 自适应布局:Ext.layout.container.AbstractFit与Ext.layout.container.Fit / 456
9.4.14 卡片布局:Ext.layout.container.AbstractCard与Ext.layout.container.Card / 456
9.5 标签面板 / 458
9.5.1 标签面板的构成及其运行流程:Ext.tab.Panel、Ext.tab.Bar与Ext.tab.Tab / 458
9.5.2 标签面板的配置项、属性、方法和事件 / 462
9.5.3 使用标签页 / 463
9.5.4 可重用的标签页 / 465
9.6 视图与选择模型 / 465
9.6.1 视图与选择模型概述 / 465
9.6.2 视图的运行流程:Ext.view.AbstractView与Ext.view.View / 466
9.6.3 选择模型的工作流程 / 475
9.6.4 选择模型的配置项、属性、方法和事件 / 480
9.6.5 视图的配置项、属性、方法和事件 / 482
9.6.6 使用视图 / 484
9.7 页面布局设计 / 491
9.8 综合实例 / 492
9.8.1 布局设计实例:仿Eclipse界面 / 492
9.8.2 在单页面应用中使用卡片布局实现“页面”切换 / 496
9.9 本章小结 / 498
第10章 重构后的Grid / 500
10.1 Grid的基类及其构成 / 500
10.1.1 概述 / 500
10.1.2 表格面板的运行流程:Ext.panel.Table / 500
10.1.3 表格视图的运行流程:Ext.view.Table与Ext.view.TableChunker / 505
10.1.4 列标题容器的运行流程:Ext.grid.header.Container / 508
10.1.5 列标题的运行流程:Ext.grid.column.Column / 510
10.1.6 虚拟滚动条的工作原理:Ext.grid.PagingScroller / 511
10.1.7 锁定列的运行流程:Ext.grid.Lockable与Ext.grid.LockingView / 516
10.2 使用Grid / 520
10.2.1 最简单的Grid / 520
10.2.2 列的配置项 / 521
10.2.3 自定义单元格的显示格式 / 523
10.2.4 通过列对象定义单元格的显示格式 / 525
10.2.5 设置行的背景颜色 / 532
10.2.6 列标题的分组 / 533
10.2.7 使用锁定列 / 534
10.2.8 Grid的配置项、属性、方法和事件 / 535
10.3 Grid的附加功能 / 537
10.3.1 概述 / 537
10.3.2 附加功能基类:Ext.grid.featrue.Featrue / 537
10.3.3 为行添加附加信息:Ext.grid.featrue.RowBody / 538
10.3.4 数据汇总功能:Ext.grid.featrue.AbstractSummary与Ext.grid.featrue. Summary / 539
10.3.5 分组功能:Ext.grid.featrue.Grouping / 543
10.3.6 分组汇总功能:Ext.grid.featrue.GroupingSummary / 545
10.4 可编辑的Grid / 546
10.4.1 概述 / 546
10.4.2 Grid实现可编辑功能的运行流程:Ext.grid.plugin.Editing / 547
10.4.3 单元格编辑的运行流程:Ext.grid.plugin.CellEditing、Ext.grid.CellEditor与Ext.Editor / 550
10.4.4 行编辑的运行流程:Ext.grid.plugin.RowEditing与Ext.grid.RowEditor / 556
10.4.5 在Grid中使用单元格编辑模式 / 561
10.4.6 在Grid中使用行编辑模式 / 562
10.4.7 Grid编辑插件的配置项、属性、方法和事件 / 563
10.5 关于列表视图:ListView / 564
10.6 属性Grid / 564
10.6.1 概述 / 564
10.6.2 使用属性Grid / 564
10.6.3 自定义编辑组件 / 565
10.6.4 PropertyGrid的配置项、属性、方法和事件 / 566
10.7 综合实例 / 567
10.7.1 使用不同选择模型的Grid以及设置默认选择行 / 567
10.7.2 Grid的本地排序和过滤 / 569
10.7.3 使用分页工具条(PagingToolbar)实现远程分页、排序和过滤 / 570
10.7.4 使用分页滚动条(PagingScroller)实现远程分页、排序和过滤 / 574
10.7.5 使用CellEditing实现数据的增删改 / 578
10.7.6 使用RowEditing实现数据的增删改 / 587
10.7.7 主从表的显示 / 589
10.8 本章小结 / 595
第11章 与Grid同源的树 / 597
11.1 树的构成 / 597
11.1.1 概述 / 597
11.1.2 树面板的运行流程:Ext.tree.Panel / 597
11.1.3 TreeStore的运行流程:Ext.data.TreeStore / 600
11.1.4 TreeColumn的运行流程:Ext.tree.Column / 602
11.1.5 视图的运行流程:Ext.tree.View与Ext.data.NodeStore / 602
11.1.6 树的选择模型:Ext.selection.TreeModel / 603
11.2 树的使用 / 603
11.2.1 一个最简单的树 / 603
11.2.2 树节点的默认字段 / 603
11.2.3 为树节点添加附加字段 / 604
11.2.4 显示多列数据(TreeGrid效果) / 605
11.2.5 在树中使用复选框 / 605
11.2.6 树的配置项、属性、方法和事件 / 607
11.3 综合实例 / 608
11.3.1 树的远程加载 / 608
11.3.2 树的动态加载及节点维护 / 610
11.3.3 XML树及节点维护 / 617
11.3.4 使用树动态控制Grid的显示 / 622
11.4 本章小结 / 625
第12章 表单 / 626
12.1 表单的构成及操作 / 626
12.1.1 表单面板的运行流程:Ext.form.Panel与Ext.form.FieldAncestor / 626
12.1.2 表单面板的配置项、属性、方法和事件 / 628
12.1.3 表单的管理:Ext.form.Basic / 629
12.1.4 BasicForm的配置项、属性、方法和事件 / 635
12.1.5 表单的操作:Ext.form.action.Action / 636
12.1.6 加载操作的运行流程:Ext.form.action.Load与Ext.form.action.DirectLoad / 637
12.1.7 提交操作的运行流程:Ext.form.action.Submit、Ext.form.action.DirectSubmit与Ext.form.action.StandardSubmit / 641
12.1.8 字段的构成 / 643
12.1.9 BaseField的配置项、属性、方法和事件 / 643
12.1.10 常用的验证函数:Ext.form.field.VTypes / 647
12.2 使用字段 / 647
12.3 使用Trigger类字段 / 664
12.3.1 具有单击功能的字段:Ext.form.field.Trigger / 664
12.3.2 实现微调功能的Spinner字段 / 665
12.3.3 使用NumberField字段 / 666
12.3.4 下拉选择类字段的基类:Ext.form.field.Picker / 667
12.3.5 使用DateField字段 / 667
12.3.6 使用TimeField字段 / 669
12.4 使用ComboBox字段 / 669
12.4.1 概述 / 669
12.4.2 BoundList对象的运行流程 / 670
12.4.3 ComboBox字段的配置项、属性、方法和事件 / 671
12.4.4 最简单的ComboBox / 672
12.4.5 自定义列表显示格式的ComboBox / 673
12.4.6 动态调整ComboBox的列表数据 / 674
12.4.7 实现ComboBox的联动 / 676
12.4.8 使用ComboBox的查询功能 / 684
12.4.9 设置ComboBox的默认值 / 688
12.5 表单的验证和加载数据 / 690
12.5.1 表单的验证及错误显示方式 / 690
12.5.2 为表单加载数据 / 695
12.6 在表单中使用布局 / 701
12.6.1 分列显示表单的字段 / 701
12.6.2 使用Fieldset作为列容器 / 703
12.6.3 使用两列布局加HtmlEditor的表单 / 704
12.6.4 在表单中使用标签页 / 705
12.7 综合实例:实现Products表的管理功能 / 706
12.8 本章小结 / 715
第13章 窗口 / 716
13.1 窗口:Ext.window.Window. / 716
13.1.1 窗口的构成 / 716
13.1.2 窗口的配置项、属性、方法和事件 / 716
13.1.3 使用窗口 / 718
13.1.4 在窗口内使用布局 / 719
13.2 信息提示窗口:Ext.window.MessageBox / 720
13.2.1 概述 / 720
13.2.2 信息提示窗口的构成 / 720
13.2.3 使用信息提示窗口 / 722
13.2.4 信息提示窗口按钮的本地化 / 723
13.2.5 使用alert方法 / 724
13.2.6 使用confirm方法 / 724
13.2.7 使用progress方法 / 725
13.2.8 使用prompt方法 / 726
13.2.9 使用wait方法 / 727
13.2.10 使用信息提示窗口要注意的问题 / 727
13.3 综合实例:实现登录窗口 / 729
13.4 本章小结 / 733
第14章 按钮、菜单与工具条 / 734
14.1 按钮 / 734
14.1.1 按钮的构成:Ext.button.Button / 734
14.1.2 按钮的配置项、属性、方法和事件 / 734
14.1.3 使用按钮 / 736
14.1.4 带分割线的按钮:Ext.button.Split / 737
14.1.5 多状态按钮:Ext.button.Cycle / 737
14.1.6 按钮组:Ext.container.ButtonGroup / 738
14.2 菜单及菜单项 / 739
14.2.1 Ext JS的菜单(Menu对象)是什么 / 739
14.2.2 菜单管理器:Ext.menu.Manager / 740
14.2.3 菜单项:Ext.menu.Item / 740
14.2.4 可复选的菜单项:Ext.menu.CheckItem / 741
14.2.5 菜单分隔条:Ext.menu.Separator / 741
14.2.6 颜色选择器菜单:Ext.menu.ColorPicker / 742
14.2.7 日期选择菜单:Ext.menu.DatePicker / 742
14.2.8 使用菜单 / 742
14.3 工具栏及工具栏组件 / 743
14.3.1 工具栏:Ext.toolbar.Toolbar / 743
14.3.2 非交互式工具栏条目的基类:Ext.toolbar.Item / 743
14.3.3 文本项:Ext.toolbar.TextItem / 744
14.3.4 填充项:Ext.toolbar.Fill / 744
14.3.5 工具栏分隔条:Ext.toolbar.Separator / 744
14.3.6 空白项:Ext.toolbar.Spacer / 744
14.3.7 分页工具栏:Ext.toolbar.Paging / 744
14.3.8 使用工具栏 / 747
14.4 使用Ext.Action / 747
14.4.1 概述 / 747
14.4.2 Action对象配置项和方法 / 748
14.4.3 使用示例 / 748
14.5 综合实例:在Grid中使用右键菜单 / 750
14.6 本章小结 / 752
第15章 图形与图表 / 753
15.1 基础知识 / 753
15.1.1 SVG简介 / 753
15.1.2 VML简介 / 754
15.2 图形介绍 / 755
15.2.1 概述 / 755
15.2.2 画布的工作流程:Ext.draw.Component / 755
15.2.3 图形引擎及接口:Ext.draw.Surface、Ext.draw.engine.Svg和Ext.draw.engine.Vml / 757
15.2.4 画笔:Ext.draw.Sprite / 760
15.2.5 图层:Ext.draw.CompositeSprite / 760
15.2.6 调色板:Ext.draw.Color / 760
15.2.7 辅助对象:Ext.draw.Draw与Ext.draw.Matrix / 760
15.3 使用图形功能 / 760
15.3.1 简单的开始 / 760
15.3.2 DrawComponent对象的配置项、属性、方法和事件 / 761
15.3.3 Surface对象的配置项、属性、方法和事件 / 761
15.3.4 DrawSprite对象的配置项、属性、方法和事件 / 762
15.3.5 CompositeSprite对象的配置项、属性、方法和事件 / 763
15.3.6 使用基本图形 / 764
15.3.7 使用图片 / 765
15.3.8 使用路径 / 766
15.3.9 移动、旋转和缩放图形 / 767
15.3.10 使用渐变效果 / 770
15.3.11 使用图层 / 771
15.4 图表介绍 / 772
15.4.1 概述 / 772
15.4.2 图表的工作流程 / 773
15.5 使用图表 / 776
15.5.1 从一个简单例子开始 / 776
15.5.2 坐标轴的配置项 / 777
15.5.3 Series对象的配置项、属性、方法和事件 / 779
15.5.4 折线图的配置项 / 780
15.5.5 显示多个折线图及使用图例 / 782
15.5.6 使用面积图 / 783
15.5.7 简单条形图(Bar和Column Chart)及使用标签(Label对象) / 785
15.5.8 堆积条形图 / 787
15.5.9 分组条形图 / 788
15.5.10 自定义条形颜色 / 789
15.5.11 使用散点图 / 789
15.5.12 使用饼图 / 791
15.5.13 自定义饼块颜色 / 792
15.5.14 使用表盘图 / 792
15.5.15 使用雷达图 / 795
15.5.16 使用时间轴 / 796
15.5.17 实现实时动态的图表 / 797
15.5.18 使用组合图 / 800
15.5.19 在图表中使用背景 / 801
15.5.20 在图表中自定义主题 / 803
15.6 本章小结 / 805
第16章 其他组件及实用功能 / 806
16.1 其他组件 / 806
16.2 使用滑块 / 812
16.3 使用提示信息 / 814
16.4 实用功能 / 822
16.5 本章小结 / 826
第17章 可简化通信的Ext.Direct / 827
17.1 准备工作 / 827
17.2 Ext.Direct的工作原理及构成 / 827
17.2.1 工作原理 / 827
17.2.2 Ext.Direct的构成 / 828
17.2.3 RemotingProvider对象的具体工作流程 / 829
17.2.4 PollingProvider对象的具体工作流程 / 838
17.3 配置Ext.Direct的使用环境 / 839
17.3.1 概述 / 839
17.3.2 .NET环境的配置 / 839
17.3.3 Java环境的配置 / 842
17.4 使用Ext.Direct / 846
17.4.1 概述 / 846
17.4.2 使用DirectProxy及进行CURD操作 / 846
17.4.3 使用Ext.Direct实现树的动态加载及节点维护 / 854
17.4.4 使用DirectLoad为表单加载数据 / 858
17.4.5 使用DirectSubmit提交表单及使用Session / 863
17.4.6 使用Ext.Direct上传文件 / 866
17.4.7 使用PollingProvider对象 / 868
17.4.8 错误处理 / 871
17.5 本章小结 / 872
第18章 动画功能 / 873
18.1 动画功能的构成及工作流程 / 873
18.1.1 概述 / 873
18.1.2 动画功能的工作流程:Ext.fx.Anim / 874
18.1.3 分步动画的工作流程:Ext.fx.Animator / 877
18.2 使用动画 / 880
18.2.1 由最简单的动画开始 / 880
18.2.2 过渡效果使用的功能函数介绍 / 880
18.2.3 使用分步动画 / 882
18.2.4 注意的问题 / 883
18.3 在Element对象中使用动画 / 883
18.4 本章小结 / 888
第19章 拖放功能 / 889
19.1 拖放功能的构成及工作流程 / 889
19.1.1 概述 / 889
19.1.2 DragDropManager对象的工作流程 / 891
19.1.3 注册节点:Ext.dd.Registry / 893
19.1.4 一般拖动功能的工作流程:Ext.dd.DD / 894
19.1.5 DragSource对象的工作流程 / 897
19.1.6 DropTarget对象的工作流程 / 898
19.1.7 DragZone对象的工作流程 / 899
19.1.8 DropZone对象的工作流程 / 899
19.2 使用拖放功能 / 899
19.2.1 最简单的拖动效果 / 899
19.2.2 使用DragSource对象与DropTarget对象 / 900
19.2.3 使用DragZone对象与DropZone对象(使用Registry对象) / 902
19.2.4 使用DragZone对象与DropZone对象(不使用Registry对象) / 903
19.2.5 通过拖动实现节点排序 / 904
19.2.6 使用GridViewDropZonePlugin插件 / 905
19.2.7 使用TreeViewDragDropPlugin插件 / 907
19.2.8 关于Grid和Tree拖动后的数据保存问题 / 910
19.3 本章小结 / 910
第20章 扩展与插件 / 911
20.1 扩展与插件的区别 / 911
20.2 扩展与插件如何选择 / 911
20.3 如何编写扩展 / 911
20.3.1 命名空间 / 911
20.3.2 定义扩展 / 912
20.3.3 定义别名 / 912
20.3.4 定义备用名 / 912
20.3.5 要求加载的类:requires与uses / 912
20.3.6 混入功能 / 913
20.3.7 构造函数与initComponent方法 / 913
20.3.8 静态属性和方法与单件模式 / 913
20.3.9 可自动生成set和get方法的属性与initConfig方法 / 914
20.3.10 在扩展中常用的方法 / 914
20.3.11 编写扩展:TreeComboBox / 914
20.4 如何编写插件 / 920
20.4.1 概述 / 920
20.4.2 AbstractPlugin对象 / 921
20.4.3 插件的别名 / 921
20.4.4 编写插件:RowColor / 922
20.5 扩展和插件介绍 / 923
20.5.1 概述 / 923
20.5.2 本地分页代理:Ext.ux.data.PagingMemoryProxy / 923
20.5.3 标签滚动菜单:Ext.ux.TabScrollerMenu / 925
20.5.4 编辑器TinyMCE / 926
20.6 本章小结 / 928
第21章 主题开发 / 929
21.1 准备工作 / 929
21.1.1 安装Ruby / 929
21.1.2 安装Compass / 930
21.1.3 SASS介绍 / 931
21.2 为Ext JS 4创建新主题 / 933
21.2.1 概述 / 933
21.2.2 目录结构 / 933
21.2.3 修改配置 / 933
21.2.4 编译 / 935
21.2.5 测试主题 / 935
21.3 通过ui配置项设置组件样式 / 937
21.4 本章小结 / 937
第22章 MVC应用架构 / 938
22.1 MVC应用架构的构成及工作流程 / 938
22.1.1 构成 / 938
22.1.2 控制器的工作流程:Ext.app.Controller / 938
22.1.3 Application对象的工作流程 / 940
22.2 一步一步实现MVC框架 / 942
22.2.1 概述 / 942
22.2.2 创建目录 / 942
22.2.3 创建首页 / 942
22.2.4 创建启动脚本:app.js / 943
22.2.5 定义登录对话框 / 944
22.2.6 创建应用脚本:Application.js / 948
22.2.7 创建Viewport视图 / 949
22.2.8 菜单视图及控制器 / 950
22.2.9 实现订单管理 / 952
22.2.10 实现产品管理 / 958
22.2.11 示例效果 / 969
22.3 本章小结 / 970
附录 简写类名与Ext JS类名对照表 / 971