第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和ColumnChart)及使用标签(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.Animato r 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