Sencha Touch学习使用心得 Unit 2
继续我们的征途......
Chapter 1:创建View
创建一个View,遵循app.js配置的命名空间,extend相当于继承,继承在Ext.form.Panel下(SenchaTouch是基于Extjs的),config就是配置页面组件了,比较通俗易懂了,重点在控制器如何操作视图......
Ext.define('ST.view.query', { //创建视图 extend: 'Ext.form.Panel',//继承在Ext.form.Panel下 config: { tabBar: { ui: "neutral", layout: { pack: "center" } }, fullscreen: true, id: "queryForm", items: [ { xtype: 'titlebar', docked: 'top', title: '查询页' }, { xtype: "spacer", height: 30 }, { xtype: "fieldset", title: " ", instructions: "Please enter your info.", defaults: { labelWidth: '35%' }, items: [{ xtype: 'textfield', id: "login_phonenum", placeHolder: "请输入手机号", label: '手机号' }, { xtype: 'textfield', border: 1, id: "login_appleid", placeHolder: "请输入AppleID", label: 'AppleID' } ] }, { xtype: "spacer", height: "4px" }, { xtype: 'button', itemId: 'btnQuery', text: '查询' }, { xtype: 'toolbar', docked: 'bottom', items: [{ xtype: 'spacer' } ] }] } });
Chapter 2:创建Controller
要知道在控制器中有三个流程,取到页面组件,页面组件触发事件,事件执行逻辑函数.
创建方法都一样,继承在Ext.app.Controller下,接下来配置config,配置refs和control.
refs 取到组件:例:QueryForm: "#queryForm",通过ID取整个View,
btnQuery: "#queryForm button[itemId=btnQuery]",取View中ID为btnQuery的Button
View被赋值给QueryForm,Button被赋值给btnQuery(Button为页面的查询按钮)等
备注:在函数中,通过Ext.getCmp(id)来取到组件进行操作.
control 触发事件调用函数:例:btnQuery触发tap事件而调用onBtnQueryTap这个函数
QueryForm触发initialize事件(initialize为页面加载事件,只有页面加载触发,其他动作皆触发tap).
onBtnQueryTap和fnQuery皆为逻辑函数,不用深究,按需向其中加入逻辑代码,如JS前台验证,后台数据验证等,成功后最终调用跳转页面函数,跳转另一个View.逻辑代码都不难,主要是了解JS的MVC如何工作的,
最后执行代码,看成果!!!
Ext.define('ST.controller.query', {
extend: 'Ext.app.Controller',
config: {
refs: {
QueryForm: "#queryForm",
btnQuery: "#queryForm button[itemId=btnQuery]"
},
control: {
QueryForm: {
initialize: "onInitialize"
},
btnQuery: {
tap: "onBtnQueryTap"
}
}
},
onInitialize: function() {
},
//获取页面参数函数
onBtnQueryTap: function() {
var QueryForm = this.getQueryForm();
var itcode = QueryForm.down("#login_itcode").getValue();
var phonenum = QueryForm.down("#login_phonenum").getValue();
var appid = QueryForm.down("#login_appleid").getValue();
this.fnQuery(itcode, phonenum, appid);
},
//参数验证函数
fnQuery: function(itcode, phonenum, appid) {
this.setCard("querylist", "ST.view.QueryList");
},
//跳转页面函数------id为页面id(getCmp()可以通过ID找到页面)-----createCard为view创建地址
setCard: function(id, createCard) {
var nextCard = Ext.getCmp(id)
var card = null;
if (typeof (nextCard) == 'undefined') {
card = Ext.create(createCard);
} else {
card = nextCard;
}
Ext.Viewport.animateActiveItem(card, {
type: 'slide',
direction: 'left'
});
}
});
页面展示:
请期待下文......

浙公网安备 33010602011771号