参考文章
http://www.sencha.com/learn/upgrading-from-sencha-touch-1x-to-2x/
http://www.sencha.com/learn/upgrading-to-sencha-touch-2-pr2/
http://docs.sencha.com/touch/2-0/#!/video/migrating-from-1-to-2
类系统(Class System)
在ST1.×里面,有两种定义类的方式:
1、使用Ext.extend
2、使用MVC提供的方法:regModel 和 regController
在ST2.×中,全部定义类的方式都只有 Ext.define
下面,举个从1.×升级到2.×定义类方式的例子:
Geo.views.BillSummary = Ext.extend(Ext.Panel, {
scroll: 'vertical' ,
html: "Loading..." ,
styleHtmlContent: true ,
initComponent: function () {
this .tpl = Ext.XTemplate.from( 'billsummary' );
Geo.views.BillSummary.superclass.initComponent.call( this );
},
getBill: function (bill) {
Geo.CongressService.getBillSummary({
bill: bill
}, this .onBillSummaryResponse, this );
},
onBillSummaryResponse: function (billSummary) {
if (Ext.isArray(billSummary.Paragraph)) {
this .update(billSummary);
} else {
this .update( 'No Bill Summary Available' );
}
}
});
|
在2.×中,我们要把上面的代码修改为:
Ext.define( 'Geo.view.BillSummary' , {
extend: 'Ext.Panel' ,
config: {
scroll: 'vertical' ,
html: 'Loading...' ,
styleHtmlContent: true
},
initialize: function () {
this .callParent(arguments);
this .tpl = Ext.Template.from( 'billsummary' );
},
getBill: function (bill) {
Geo.CongressService.getBillSummary({
bill: bill
}, this .onBillSummaryResponse, this );
},
onBillSummaryResponse: function (billSummary) {
if (Ext.isArray(billSummary.Paragraph)) {
this .setHtml(billSummary);
} else {
this .setHtml( 'No Bill Summary Available' );
}
}
});
|
总结一下修改的地方:
1、使用Ext.define 代替了 Ext.extend
2、把所有的类配置信息都放到了一个叫config的对象字面量中。
3、使用initialize方法替换了initComponent
在1.×中,只有Component类有initComponent方法,而在2.×中,所有的类都有initialize方法,在类实例化之前执行这个方法。
这里还要注意的是,我们再也不需要显式地调用Geo.views.BillSummary.superclass.initComponent.call(this);,执行父类构造函数用 this.callParent(arguments)
MVC
ST2.×的MVC架构基本上跟1.×是一样的,只是在一些语法上有细微差别,使到我们写出来的代码可读性和可测试性更强。
Models
Model类与ST2.×的其他类一样,config信息需要移到一个叫config的字面量中;Ext.regModel不再使用,而是用Ext.define去定义Models类。
例子:
Ext.regModel( 'MyApp.model.User' , {
fields: [
{name: 'name' , type: 'string' },
{name: 'age' , type: 'int' },
{name: 'alive' , type: 'boolean' , defaultValue: true }
],
validations: [
{type: 'presence' , field: 'age' },
{type: 'length' , field: 'name' , min: 2}
],
sayName: function () {
alert( this .get( 'name' ));
}
});
|
修改为:
Ext.define( 'MyApp.model.User' , {
extend: 'Ext.data.Model' ,
config: {
fields: [
{name: 'name' , type: 'string' },
{name: 'age' , type: 'int' },
{name: 'alive' , type: 'boolean' , defaultValue: true }
],
validations: [
{type: 'presence' , field: 'age' },
{type: 'length' , field: 'name' , min: 2}
]
},
sayName: function () {
alert( this .get( 'name' ));
}
});
|
总结一下升级步骤:
- 使用 Ext.define 替换 Ext.regModel
- 继承 Ext.data.Model
- 把配置移动到 config 块中
- 把定制函数留在config块以外 (例如上面的 sayName )
VIEWS
views没什么需要迁移的地方,只需要注意:类名尽量采用这样的命名方式:MyApp.view.SomeViewName
Application
你可以保留大部分定义 Ext.application的方式,例如:
Ext.application({
name: 'MyApp' ,
icon: 'resources/images/logo.png' ,
launch: function () {
Ext.create( 'MyApp.view.Main' );
}
});
|
这里,唯一新的用法是使用 Ext.create 去初始化应用。
这样的改变意义是:在1.×中,一般的做法实在Ext.application中定义全部的controller,和部分的model、view、model,其余的依赖分散在系统的各个地方,这样使到我们很难直观地了解到整个系统的结构。
在2.×中,官方建议把所有的东西都定义在Ext.application,例如这样:
Ext.application({
name: 'MyApp' ,
icon: 'resources/images/logo.png' ,
models: [ 'User' , 'Group' ],
controllers: [ 'Users' , 'Login' ],
views: [ 'Main' , 'Users' ],
stores: [ 'Users' ],
launch: function () {
Ext.create( 'MyApp.view.Main' );
}
});
|
Controllers
正如models和其他类一样,需要使用Ext.define替代Ext.regController 去定义Controller类。
例如:
Ext.regController( "searches" , {
showSomething: function () {
alert( 'something' );
}
});
|
在2.×,变成:
Ext.define( 'MyApp.controller.Searches' , {
extend: 'Ext.app.Controller' ,
showSomething: function () {
alert( 'something' );
}
});
|
在Applications中提到,如果Controller中有其他依赖的model, view 或者 store ,则要放到Application中定义。
Routes
在Sencha Touch 1.x中,一个Controller只是一堆可导向的方法的集合,但是在2.×中,Controller变得更主动,它可以定义自己的routes:
Ext.define( 'MyApp.controller.Searches' , {
config: {
routes: {
'search/:query' : 'doSearch'
}
},
doSearch: function (query) {
alert( 'searching for ' + query);
}
});
|
还有问题吗?
请到这里去看看有没有同样的问题吧,如果没有,发帖请教。
http://www.sencha.com/forum/forumdisplay.php?89-Sencha-Touch-2.x-Forums
相关推荐
Sencha Touch 2是Sencha Touch的一个主要升级版,引入了许多新特性和改进。其API文档主要包括以下几个部分: 1. **类系统**:Sencha Touch 2采用面向对象的类系统,包括基础类、控制器、模型、视图、存储、组件等。...
1. **响应式设计**:Sencha Touch 提供了适应各种屏幕尺寸和设备的布局系统,确保应用在手机、平板和桌面设备上都能呈现良好的用户体验。 2. **丰富的UI组件**:包括列表(Lists)、表格(Grids)、按钮(Buttons)、面板...
在给定的信息中,"sencha.js" 和 "sencha.css" 指向了Sencha的核心库文件,它们在创建交互式Web应用时起到关键作用。 **sencha.js**: 这是Ext JS库的主要JavaScript文件,包含了一整套用于构建桌面应用程序的组件...
1. **获取Sencha Touch 2 源码** - 打开终端或命令提示符,使用Git克隆Sencha Touch 2的官方仓库: ``` git clone https://github.com/sencha/Sencha-Touch.git ``` 2. **创建新项目** - 使用Sencha CMD创建一个...
这个"Sencha Touch中文翻译文档"是针对Sencha Touch 2(ST2)的详细教程和指南,旨在帮助中国开发者更轻松地理解和运用这一框架。 在入门基础部分,文档可能涵盖了以下内容: 1. **安装与设置**:如何下载Sencha ...
1. **Sencha Touch 2基础知识**:Sencha Touch 2基于MVC(Model-View-Controller)架构,提供了丰富的UI组件和数据管理功能。通过学习这些源代码,你可以了解到如何创建模型(Models)、视图(Views)、控制器...
1. **组件系统**:Sencha Touch的核心是其强大的组件(Component)系统,它允许开发者创建各种复杂的用户界面元素,如按钮、表格、列表、面板等。组件可以嵌套,形成复杂的UI结构。 2. **模型(Model)与存储...
通过以上分析,我们可以看出这个压缩包提供了一个完整的Sencha Touch应用实例,从基础的HTML结构到应用程序的核心逻辑,再到资源管理和离线缓存,覆盖了构建一个移动Web社区所需的所有关键要素。学习和研究这个案例...
1. **Sencha Touch 2框架**:包含`sencha-touch.js`或`sencha-touch-debug.js`,这是运行Sencha Touch应用的基本文件,包含了所有核心类和功能。 2. **主题样式**:Sencha Touch 2支持多种视觉主题,如`touch/...
在阅读了《Hands-on Sencha Touch中文翻译第六章.pdf》文档的内容之后,可以提炼出以下知识点,主要涉及Sencha Touch框架以及使用Sencha Cmd命令行工具进行Sencha Touch应用的创建和管理。 ### Sencha Cmd命令行...
Sencha Touch2发布.pdf
1. **Sencha Touch 框架概述** Sencha Touch 是一个基于JavaScript的框架,目标是为智能手机和平板电脑提供原生般的交互体验。它支持多平台,包括iOS、Android、Blackberry等,并且包含了大量可复用的UI组件,如...
Sencha Touch 2.4.0 是一个专为移动设备设计的前端JavaScript框架,它使得开发者能够构建功能丰富的、响应式的Web应用程序,这些应用在智能手机、平板电脑等移动设备上表现得如同原生应用一样流畅。这个框架由Sencha...
通过分析这些文件,我们可以学习到如何组织一个Sencha Touch项目,如何利用其组件和数据管理机制,以及如何优化应用的性能和用户体验。对于想要深入理解Sencha Touch框架或者提高移动Web开发技能的开发者来说,...
1. **Sencha Touch 与普通Web开发的区别** Sencha Touch 的开发与传统HTML页面开发的主要区别在于对HTML5和CSS3的深度利用,以及针对移动设备的优化。通过这些技术,ST能够实现类似原生应用的交互效果和视觉表现,...
1. **组件化设计**:Sencha Touch Grid基于组件模型,这意味着你可以将网格视为由多个可重用部分组成的单元,如行、列、头部和体部。这使得定制和扩展变得容易。 2. **数据绑定**:Grid与Sencha的数据存储(Store)...
1. **Sencha Touch**: - Sencha Touch 是由Sencha公司开发的,基于HTML5的移动应用开发框架。 - 它提供了大量的UI组件,如表格、按钮、面板等,帮助开发者构建具有原生体验的跨平台应用。 - Sencha Touch 支持...
1. **响应式设计**:Sencha Touch 2.1.1支持各种屏幕尺寸和设备类型,能自动调整布局以适应不同的显示环境,确保应用在不同设备上都有良好的视觉效果。 2. **组件库**:框架包含大量预定义的UI组件,如按钮、表格、...
### Hands-On Sencha Touch 2:实战指南 #### 核心知识点概览 《Hands-On Sencha Touch 2》是一本全面介绍如何使用Sencha Touch 2.3框架开发高效移动Web应用的专业书籍。本书由资深Sencha Touch开发者、培训师及...
Sencha Touch SDK工具是开发移动应用的重要资源,尤其对于那些希望使用Sencha Touch框架构建触控友好、跨平台Web应用程序的开发者来说。Sencha Touch是一个强大的JavaScript库,它提供了丰富的UI组件和API,使得...