`

HTML 5移动web开发指南中sencha touch笔记

阅读更多
《HTML 5移动web开发指南》,是UC公司著名前端开发师唐俊开(网名:三桥)
的新书,介绍了jquery mobile,sencha touch,phonegap的开发,内容很丰富,
最后还有一个小的实例,推荐阅读,给分85分,下面是其中sencha touch的
一些本人新学到的知识点小结
1  sencha touch中如果为某控件同时指定了cls样式和componentCls样式的话,
则componentCls样式会覆盖cls样式,如果还加了baseCls样式,则原来的样式会被命名
为比如panel_baseCls和pannel_baseCls登新的样式名称


2 UI 按钮
   <script type="text/javascript">
  Ext.setup( {
    onReady: function() {
      // create the root panel
      new Ext.Panel({
        fullscreen: true,
        items: [
          // add a panel to the root panel
          // this will contain a vertical layout of buttons
          {
            xtype: "panel",
            layout: "vbox",
            items: [
              {
                xtype: "button",
                ui: "normal",
                text: "Normal" 
              },
              {
                xtype: "button",
                ui: "back",
                text: "Back" 
              },
              {
                xtype: "button",
                ui: "round",
                text: "Round" 
              },
              {
                xtype: "button",
                ui: "action",
                text: "Action" 
              },
              {
                xtype: "button",
                ui: "forward",
                text: "Forward" 
              }
            ] 
          }
        ]
      });
    }
  });
</script>

   按钮根据 ui 配置选项进行样式化。支持的按钮类型是 normal、back、round、action 和 forward。


3 为sencha touch设置自定义图标,见
http://wenku.baidu.com/view/47bc9087e53a580216fcfead.html

  实际上ui,iconmark,iconcls三个组件属性来实现,其实是base64编码而已,体积大了

4  按钮分组SegmentedButton.toggle,多个按钮中只有一个能按,比如
      xtype: 'toolbar',
                        docked: 'top',
                        items: [{
                            xtype: 'segmentedbutton',
                            items: [{
                                text: 'left',
                                pressed: true
                            }, {
                                text: 'center'
                            }, {
                                text: 'right'
                            }, {
                                text: 'justify'
                            }], // items
                            listeners: {
                                toggle: function (segBtn, btn, isPressed) {
                                    Ext.Msg.alert('Ext.SegmentedButton toggle:',
                                        btn.config.text + ' (pressed:' + isPressed + ')');
                                } // toggle


5 Carousels,翻译过来“传送带”的意思,顾名思义,仿佛屏幕背后就有一传送带,用户发出向左或向右的指令,即可命令传送带“移动”。移动设备上的屏

幕就是当前显示的内容。在中间的那个“一点点”图案即为指示器,指示器可以告诉你剩余有多种张待现实的页面。

   Ext.create('Ext.Carousel', {
    fullscreen: true,

    defaults: {
        styleHtmlContent: true
    },

    items: [
        {
            html : 'Item 1',
            style: 'background-color: #5E99CC'
        },
        {
            html : 'Item 2',
            style: 'background-color: #759E60'
        },
        {
            html : 'Item 3'
        }
    ]
});

6 ext.util.geolocation用法:

getCurrentPosition:function(){ 
    var geo = new Ext.util.GeoLocation({ 
        autoUpdate: true, 
        listeners: { 
            locationupdate: function (geo) { 
                Ext.getCmp('latitude') 
                    .setValue(geo.coords.latitude); 
                Ext.getCmp('longitude') 
                    .setValue(geo.coords.longitude); 
            }, 
            locationerror:function(geo, 
                                bTimeout, 
                              bPermissionDenied, 
                              bLocationUnavailable, 
                              message){ 
            } 
        } 
    }); 
    geo.updateLocation(); 

  
  
7 自定义命名空间后,则可以直接使用调用实例变量了
   比如MyApp.panelDemo=new Ext.Pannel({    });

8 sencha touch mvc中的model:
   
      MyApp.models.User=Ext.regModel( ..........)


然后定义store,比如:


app.stores.noteStore = new Ext.data.Store({
model:'note',
id:'noteStore'
});


app.models.note = Ext.regModel("note",{
fields:[
{name:'id',type:'int'},
{name:'title',type:'string'},
        {name:'content',type:'string'},
        {name:'position',type:'string'},
        {name:'latitude',type:'string'},
        {name:'longitude',type:'string'}
],
    /* 使用localStorage代理 */
proxy : {
type:'localstorage',
        id:'noteStorage'
}
});




一对多关系
     Ext.regModel('User',[fields:['id'],hasMany:['Post']});
    belongsTo:........

9 setactiveitem方法,能在不同的子组件中隐藏和切换,比如
    Ext.getCmp('pannel1').hide();
    Ext.getCmp('pannel2').show();
  等价于
   Ext.getCmp('pannel1').setActviteItem('pannel2');

10 MVC中的控制类注册
    MyApp.controllers.demoAction=Ext.regController('demoAction',{ showpannel:function()
                                                                       {

                                                                    });
                                                           }
                                       });
        调用时MyApp.controllers.demoAction.showpannel();


11 一个保存数据到sencha touch localstorage例子
    saveNote:function(){
        var form = Ext.getCmp("noteForm");
        var store = app.stores.noteStore;

        var last = store.last();
        var maxId = last==undefined?1:last.data.id+1;
        form.submit({
            waitMsg:'处理中...',
            success:function(){
                app.controllers.appController.showListPanel();
            }
        });
        var m = Ext.ModelMgr.create({id:maxId},'note');
        form.updateRecord(m,false);
        app.stores.noteStore.insert(maxId,m);
        app.stores.noteStore.sync();
        form.reset();
        app.controllers.appController.showListPanel();
    },

删除记录:
     removeAllNote:function(){
        Ext.Msg.confirm("确认", "你确认要清除本地所有数据?", function(){
            var count = app.stores.noteStore.getCount();
            for(var i=0;i<count;i++){
                app.stores.noteStore.removeAt(0);
            }
            app.stores.noteStore.sync();
            app.views.moreActionSheet.hide();
        });
    },



2
12
分享到:
评论

相关推荐

    Sencha touch学习笔记一:用Sencha Cmd方式创建第一个应用

    Sencha Touch 是一款用于构建移动Web应用程序的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,使得开发者能够创建交互性极强、响应式的触屏应用。本篇学习笔记将聚焦于如何使用Sencha Cmd工具来创建你...

    Extjs 5 学习笔记

    ### Extjs 5 学习笔记之 SenchaCmd 深入解析 #### 一、SenchaCmd 的简介 SenchaCmd 是一个跨平台的命令行工具,它为基于 ExtJS 和 Sencha Touch 应用程序的开发周期提供了全面的支持。从创建应用程序的基础结构到...

    三电平SVPWM模型的Matlab仿真及其在逆变器性能优化中的应用

    内容概要:本文详细介绍了三电平SVPWM模型在Matlab中的搭建与研究,重点探讨了三电平逆变器的工作原理、性能特点以及参数优化方法。文中不仅解释了三电平逆变器相较于传统两电平逆变器的优势,如更高的电压分辨率和更低的谐波失真,还深入讨论了SVPWM控制策略的具体实现步骤,包括扇区划分、中性点电压平衡、死区时间和波形生成等关键环节。此外,文章还强调了仿真与实际应用之间的差异,指出仿真只是调试的起点而非终点。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器建模和仿真相关工作的从业者。 使用场景及目标:适用于需要深入了解三电平逆变器特性和优化控制策略的研究项目,旨在帮助读者掌握基于Matlab的三电平SVPWM模型构建技巧,从而更好地进行逆变器性能评估和改进。 其他说明:文章提供了大量实用的Matlab代码片段,便于读者理解和实践。同时提醒读者关注仿真与现实应用间的细微差别,确保理论成果能够顺利转化为实际效益。

    spring-boot-2.3.9.RELEASE.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    水利规范-7p倒虹吸工程及渠道防渗衬砌设计图集.zip

    水利规范-7p倒虹吸工程及渠道防渗衬砌设计图集.zip

    JAVAWeb外文文献毕业设计样本.doc

    JAVAWeb外文文献毕业设计样本.doc

    scratch少儿编程逻辑思维游戏源码-我的世界冒险通过 V5.zip

    scratch少儿编程逻辑思维游戏源码-我的世界冒险通过 V5.zip

    scratch少儿编程逻辑思维游戏源码-星之卡比 动画.zip

    scratch少儿编程逻辑思维游戏源码-星之卡比 动画.zip

    spring-data-redis-1.1.0.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-我的世界构建像素立方体.zip

    scratch少儿编程逻辑思维游戏源码-我的世界构建像素立方体.zip

    spring-boot-2.5.1.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    scratch少儿编程逻辑思维游戏源码-仙人掌内战.zip

    scratch少儿编程逻辑思维游戏源码-仙人掌内战.zip

    scratch少儿编程逻辑思维游戏源码-贪食蛇.zip

    scratch少儿编程逻辑思维游戏源码-贪食蛇.zip

    rocksdbjni-6.29.4.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    spring-boot-1.3.6.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    独家分享耗时3个月整理的开发者必备资源库 - 百度/迅雷/夸克三端同步更新

    复制链接到浏览器打开即可,https://link3.cc/diwangluo

    基于Matlab的水果识别程序:融合图像处理与深度学习技术

    内容概要:本文详细介绍了使用Matlab编写的水果识别程序。首先简述了人工智能和机器学习在水果识别领域的应用背景,强调了Matlab作为强大编程环境的优势。接着,文章逐步讲解了水果识别程序的具体实现流程,涵盖数据预处理、特征提取、模型训练以及最终的识别算法实现。每个环节都采用了先进的技术和方法,如图像去噪、大小调整、深度学习算法(特别是卷积神经网络CNN),并通过训练神经网络模型来提升识别精度。此外,还讨论了相关技术手段和技术挑战,展示了Matlab在图像处理和计算机视觉方面的强大能力。 适合人群:对图像处理、机器学习感兴趣的科研人员、学生及工程师。 使用场景及目标:适用于希望深入了解Matlab环境下水果识别程序的设计与实现的研究者;旨在帮助使用者掌握从数据准备到模型部署的一系列技能,为实际项目提供理论支持和技术指导。 其他说明:文中不仅提供了详细的程序实现步骤,还对未来发展方向进行了展望,鼓励更多人参与到水果识别及相关领域的研究中。

    rocksdbjni-6.16.4.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    西门子S7-300 PLC在汽车生产线自动化中的模块化编程与Profibus DP网络集成方案

    内容概要:本文介绍了西门子S7-300 PLC在某汽车生产线的应用,涵盖了从硬件配置到软件编程的各个方面。硬件部分包括300 CPU、TP700触摸屏、远程ET200站点和Profibus DP网络系统。软件部分涉及PLC程序、HMI界面、IO表和图纸。重点在于模块化编程方法,如模拟量采集、气缸控制、线体阻挡、延时控制和自动换班等功能块的集成。同时,文中提到压力值和位移传感器的数据采集,并通过触摸屏以曲线形式展示。此外,还讨论了梯形图、STL和SCL三种编程语言的混合使用,确保程序结构清晰且易于维护。最后强调了Profibus DP网络在各站点间数据传输中的重要作用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和Profibus DP网络有研究兴趣的人群。 使用场景及目标:适用于汽车制造业及其他类似行业,旨在提高生产线的自动化程度和生产效率,确保产品质量。通过对S7-300 PLC的学习和应用,掌握模块化编程技巧和网络通信协议,优化生产线管理。 阅读建议:读者可以通过本文深入了解S7-300 PLC的具体应用场景和技术细节,特别是模块化编程的优势和混合编程的实际操作。同时,关注Profibus DP网络的作用,理解其在网络架构中的重要地位。

    scratch少儿编程逻辑思维游戏源码-数学横版过关游戏.zip

    scratch少儿编程逻辑思维游戏源码-数学横版过关游戏.zip

Global site tag (gtag.js) - Google Analytics