本书是Ext JS领域的集大成之作,由资深Ext JS专家撰写,技术社区联袂推荐,权威性毋庸置疑。
本书有两大特点:第一,授人以鱼,根据Ext JS的构成体系全面系统地讲解了其开发方法与技巧,每个知识点都辅之以翔实的案例,同时包含大量最佳实践,适合系统学习和开发参考;第二,授人以渔,宏观上对Ext JS的整体架构进行了分析,微观上则通过源代码深刻揭示了Ext JS的工作机制与原理,对于想了解Ext JS工作原理和在开发中碰到疑难问题的读者尤为有帮助。
全书一共22章:第1章简要介绍了学习Ext JS必备的基础知识、JSON、Ext JS 4的新特性,以及其开发工具的获取、安装与配置;第2章介绍了Ext JS 4的获取、Ext JS库的配置与使用、语法、本地化,以及一个经典的入门示例;第3章详细讲解了调试的工具及技巧,这是本书的重要内容,希望所有Web开发者都能掌握;第4章全面介绍了Ext JS的基础架构;第5~9章分别讲解了Ext JS的事件及其应用、选择器与DOM操作、数据交互、模板与组件、容器、面板、布局与视图;第10章和第11章分别详细介绍了重构后的Gird和与Gird同源的树;第12~16章分别讲解了表单、窗口、按钮、菜单、工具条、图形、图表,以及其他组件和实用功能;第17~19章分别介绍了Ext.Direct、动画功能和拖放功能;第20~22章则分别讲解了扩展与插件、主题开发、MVC应用的架构。
封面图
目录
- 前言
- 第1章Ext JS 4开发入门 / 1
- 1.1学习Ext JS必需的基础知识 / 1
- 1.2JSON概述 / 3
- 1.2.1认识JSON /3
- 1.2.2JSON的结构 / 3
- 1.2.3JSON的例子 / 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.3Ext JS 4概述 / 15
- 1.4Ext JS的开发工具的获取、安装与配置介绍 / 18
- 1.4.1Ext Designer / 18
- 1.4.2在Visual Studio中实现智能提示 / 23
- 1.4.3Spket / 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.7Ext 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.1Ext JS框架的命名空间:Ext / 90
- 4.1.1概述 / 90
- 4.1.2apply和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.3Ext JS的静态方法 / 112
- 4.3.1概述 / 112
- 4.3.2Ext.Object中的静态方法 / 113
- 4.3.3Ext.Function中的静态方法 / 120
- 4.3.4Ext.Array中的静态方法 / 127
- 4.3.5Ext.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.1Ext JS的选择器:Ext.DomQuery / 215
- 6.1.1选择器的作用 / 215
- 6.1.2使用Ext.query选择页面元素 / 215
- 6.1.3基本选择符 / 223
- 6.1.4属性选择符 / 229
- 6.1.5CSS属性值选择符 / 234
- 6.1.6伪类选择符 / 235
- 6.1.7扩展选择器 / 248
- 6.1.8Ext.DomQuery的使用方法 / 249
- 6.1.9Ext 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.5Helper对象的使用方法 / 263
- 6.4元素的操作 / 273
- 6.5获取元素集合:Ext.CompositeElementLite与Ext.CompositeElement / 277
- 6.5.1使用Ext.select获取元素集合 / 277
- 6.5.2Ext.dom.CompositeElement与Ext.dom.CompositeElementLite的区别 / 279
- 6.5.3操作元素集合 / 279
- 6.6综合实例:可折叠的面板Accordion / 280
- 6.7本章小结 / 283
- 第7章数据交互 / 284
- 7.1数据交互基础 / 284
- 7.1.1Ajax概述 / 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.3Reader对象的配置项 / 321
- 7.3.4格式化提交数据:Ext.data.writer.Writer、Ext.data.writer.JSON和Ext.data. writer.Xml / 322
- 7.3.5Writer对象的配置项 / 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.5Store / 344
- 7.5.1概述 / 344
- 7.5.2Store对象的实例化过程 / 345
- 7.5.3TreeStore对象的实例化过程 / 348
- 7.5.4Ext.data.Store加载数据的方法 / 350
- 7.5.5Ext.data.TreeStore加载数据的方法 / 354
- 7.5.6Store的配置项 / 358
- 7.5.7Store的分页 / 359
- 7.5.8Store的排序:Ext.util.Sorter与Ext.util.Sortable / 360
- 7.5.9Store的过滤:Ext.util.Filter / 363
- 7.5.10Store的分组:Ext.util.Grouper / 363
- 7.5.11树节点:Ext.data.NodeInterface与Ext.data.Tree / 364
- 7.5.12Store的方法 / 366
- 7.5.13Store的事件 / 368
- 7.5.14Store管理器:Ext.data.StoreManager / 369
- 7.6综合实例 / 369
- 7.6.1远程读取JSON数据 / 369
- 7.6.2读取XML数据 / 378
- 7.6.3Store的数据操作 / 379
- 7.7本章小结 / 384
- 第8章模板与组件基础 / 385
- 8.1模板 / 385
- 8.1.1模板概述 / 385
- 8.1.2Ext.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.3z-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.1Grid的基类及其构成 / 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.8Grid的配置项、属性、方法和事件 / 535
- 10.3Grid的附加功能 / 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.2Grid实现可编辑功能的运行流程: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.7Grid编辑插件的配置项、属性、方法和事件 / 563
- 10.5关于列表视图:ListView / 564
- 10.6属性Grid / 564
- 10.6.1概述 / 564
- 10.6.2使用属性Grid / 564
- 10.6.3自定义编辑组件 / 565
- 10.6.4PropertyGrid的配置项、属性、方法和事件 / 566
- 10.7综合实例 / 567
- 10.7.1使用不同选择模型的Grid以及设置默认选择行 / 567
- 10.7.2Grid的本地排序和过滤 / 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.3TreeStore的运行流程:Ext.data.TreeStore / 600
- 11.1.4TreeColumn的运行流程: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.3XML树及节点维护 / 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.4BasicForm的配置项、属性、方法和事件 / 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.9BaseField的配置项、属性、方法和事件 / 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.2BoundList对象的运行流程 / 670
- 12.4.3ComboBox字段的配置项、属性、方法和事件 / 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.1Ext 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.2Action对象配置项和方法 / 748
- 14.4.3使用示例 / 748
- 14.5综合实例:在Grid中使用右键菜单 / 750
- 14.6本章小结 / 752
- 第15章图形与图表 / 753
- 15.1基础知识 / 753
- 15.1.1SVG简介 / 753
- 15.1.2VML简介 / 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.2DrawComponent对象的配置项、属性、方法和事件 / 761
- 15.3.3Surface对象的配置项、属性、方法和事件 / 761
- 15.3.4DrawSprite对象的配置项、属性、方法和事件 / 762
- 15.3.5CompositeSprite对象的配置项、属性、方法和事件 / 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.3Series对象的配置项、属性、方法和事件 / 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.2Ext.Direct的工作原理及构成 / 827
- 17.2.1工作原理 / 827
- 17.2.2Ext.Direct的构成 / 828
- 17.2.3RemotingProvider对象的具体工作流程 / 829
- 17.2.4PollingProvider对象的具体工作流程 / 838
- 17.3配置Ext.Direct的使用环境 / 839
- 17.3.1概述 / 839
- 17.3.2.NET环境的配置 / 839
- 17.3.3Java环境的配置 / 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.2DragDropManager对象的工作流程 / 891
- 19.1.3注册节点:Ext.dd.Registry / 893
- 19.1.4一般拖动功能的工作流程:Ext.dd.DD / 894
- 19.1.5DragSource对象的工作流程 / 897
- 19.1.6DropTarget对象的工作流程 / 898
- 19.1.7DragZone对象的工作流程 / 899
- 19.1.8DropZone对象的工作流程 / 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.2AbstractPlugin对象 / 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.3SASS介绍 / 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.1MVC应用架构的构成及工作流程 / 938
- 22.1.1构成 / 938
- 22.1.2控制器的工作流程:Ext.app.Controller / 938
- 22.1.3Application对象的工作流程 / 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