`
三里小龙
  • 浏览: 87857 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

关于SenchaTouch生成动态TabPanel的一些代码摘要

阅读更多

tab_auto.js 


Ext.ns("mars.view"); 
Ext.ns("mars.view.Tpl"); 
Ext.ns("mars.view.XTpl"); 

/*Models*/ 
Ext.regModel('Emp', { 
    fields: [ 
        {name: 'deptno',  type: 'integer'}, 
        {name: 'empName', type: 'string'}, 
        {name: 'empno', type: 'string'} 
    ] 
}); 

/*Common List*/ 
mars.view.List = (function(listId,model,url,sorters,itemTpl){ 
var _self; 
return _self = { 
id: model+listId, 
xtype: 'list', 
width: '100%', 
height: '100%', 
store : new Ext.data.Store({ 
model : model, 
    proxy: { 
        type: 'ajax', 
        url : url, 
        reader: { 
            type: 'json', 
            root: model 
        } 
    }, 
    autoLoad: true, 
sorters : sorters, 
getGroupString : function(record) { 
return record.get(sorters)[0]; 

}), 
itemTpl: itemTpl, 
listeners: { 
itemtap: function(list, index, item, e) { 
var store = list.getStore(), 
host = store.getAt(index); 
Ext.Msg.alert(host.get(sorters)); 


}; 
}); 

/*Templetes*/ 
mars.view.Tpl.One= 
'<div class="contact">' 
+'<div style="font-size:11pt;float:left;">' 
+'<div style="margin:0.5em 0.5em 0.5em;"><span style="color:red;">{empName}</span></div>' 
+'</div>' 
+'</div>'; 

mars.view.XTpl.Two=new Ext.XTemplate([ 
'<div class="demo-weather" style="font-size:12px;">' + '<tpl for=".">' 
+ '<div class="day">' 
+ '<div class="temp">{deptno}</div>', 
'<span class="temp">{empName}</span>', 
'<span class="temp">{empno}</span></div></tpl></div>' 
]); 

/*TabPanel*/ 
mars.view.Tab = (function(){ 
var _self; 
return _self = Ext.extend(Ext.TabPanel, { 
id: '', 
fullscreen: true, 
ui : 'dark', 
items: [{id: 'spacerTemp',xtype: 'button'}],//initial a temp component to make the tab style normal. 
/*---User-defined Attributes---*/ 
count: 1, 
url: '', 
/*-----------------------------*/ 
constructor: function(tabId,url){ 
this.id = tabId; 
this.url = url; 
_self.superclass.constructor.call(this); 
}, 
initComponent: function(){ 
_self.superclass.initComponent.call(this); 
this.tabBar.scroll='horizontal'; 
}, 
listeners: { 
added: function(){ 
var tabId = this.id; 
var url = this.url; 
        Ext.Ajax.request({ 
            url: url, 
            success: function(response, opts) { 
                Ext.getCmp(tabId).remove(Ext.getCmp('spacerTemp'));//remove the temp tab 
                Ext.getCmp(tabId).add(eval('('+response.responseText+')')); 
                Ext.getCmp(tabId).setActiveItem(0);//set the active item via index 
               Ext.getCmp(tabId).doLayout(); 

        }); 
}, 
cardswitch:  function(obj, newCard, oldCard, index, animated){ 
try{ 
if(this.count>1){ 
newCard.remove(Ext.getCmp(this.model+newCard.id)); 
this.addDynamicItems(obj, newCard, oldCard, index, animated); 
}else{ 
this.addDynamicItems(obj, newCard, oldCard, index, animated); 

newCard.doLayout(); 
this.count++; 
}catch(Exception){ 
void(0); 


}, 
addDynamicItems: function(obj, newCard, oldCard, index, animated){ 
switch(index){ 
case 0: 
var url = '../base/fetchEmp.do?deptno='+newCard.id; 
newCard.add(mars.view.List(newCard.id,'Emp',url,'deptno',mars.view.Tpl.One)); 
break; 
case 1: 
var url = '../base/fetchEmpTest.do?deptno='+newCard.id; 
newCard.add(new mars.view.Panel('autoPanel',url,mars.view.XTpl.Two)); 
break; 


});
})(); 


/*Panel*/ 
mars.view.Panel = (function(){ 
var _self; 
return _self = Ext.extend(Ext.Panel, { 
id: '', 
scroll: 'vertical', 
fullscreen: true, 
/*---User-defined Attributes---*/ 
url: '', 
xtpl: '', 
/*-----------------------------*/ 
constructor: function(id,url,xtpl){ 
this.id = id; 
this.url = url; 
this.xtpl = xtpl; 
_self.superclass.constructor.call(this); 
}, 
initComponent: function(){ 
_self.superclass.initComponent.call(this); 
this.listeners = { 
added: this.loadRecord 
}; 
}, 
items: [{ 
xtype: 'panel', 
scroll: 'vertical' 
}], 
loadRecord: function() { 
var pnl = this.items.get(0); 
var xtpl = this.xtpl; 
Ext.Ajax.request({ 
url: this.url, 
success: function(response, opts) { 
xtpl.overwrite(pnl.body, eval('('+response.responseText+')')); 

}); 

});
})(); 

[align=center][/align] 

tab_auto.html 



<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html"> 
<title>Form</title> 
<link rel="stylesheet" type="text/css" href="../lib/touch/resources/css/sencha-touch.css"> 
<script type="text/javascript" src="../lib/touch/sencha-touch.js"></script> 
<script type="text/javascript" src="../lib/touch/sencha-touch-debug.js"></script> 
<script type="text/javascript" src="testPanel.js"></script> 
<script type="text/javascript" src="tab_auto.js"></script> 
    <style type="text/css" media="screen"> 
        .day { 
            float: left; 
            background-color: #c5c5c5; 
            color: rgba(0,0,0,.5); 
            text-shadow: #fff 0 1px 0; 
            margin: 1%; 
            width: 18%; 
            text-align: center; 
            -webkit-border-radius: 15px; 
            border-bottom: 1px solid #999; 
            padding: 15px; 
        } 
        
        .x-phone .day { 
            float: none; 
            width: 98%; 
            padding: 10px; 
        } 
        
        .day img { 
            display: block; 
            margin: 0 auto; 
        } 

        .temp { 
            display: block; 
            margin: 20px 0; 
            font-size: 48px; 
            line-height: 40px; 
        } 
        
        .day .temp_low { 
            display: inline; 
        } 
        
        .temp_low { 
            display: block; 
            font-size: 26px; 
            color: rgba(30,30,30,.5); 
        } 
        
        .date { 
            margin: 10px 0 5px; 
            font-size: 11px; 
            font-weight: bold; 
        } 
        .demos-loading { 
          background: rgba(0,0,0,.3) url(../resources/shared/loading.gif) center center no-repeat; 
          display: block; 
          width: 10em; 
          height: 10em; 
          position: absolute; 
          top: 50%; 
          left: 50%; 
          margin-left: -5em; 
          margin-top: -5em;  
          -webkit-border-radius: .5em; 
          color: #fff; 
          text-shadow: #000 0 1px 1px; 
          text-align: center; 
          padding-top: 8em; 
          font-weight: bold; 
        } 
    </style> 
<script type="text/javascript"> 
<!-- 
new Ext.Application({ 
launch: function(){ 
this.viewport = new Ext.Panel({ 
id: 'mp', 
fullscreen: true, 
layout: 'vbox', 
items: [{ 
xtype: 'button', 
ui: 'round', 
text: 'test', 
handler: function(){ 
//Ext.getCmp('mp').add(new mars.view.TestPanel()); 
//Ext.getCmp('mp').doLayout(); 

Ext.getCmp('mp').add(new mars.view.Tab('autoTab','../base/fetchDept.do')); 
Ext.getCmp('mp').doLayout(); 

}] 
}); 

}); 
//--> 
</script> 
  </head> 
  
  <body> 
<textarea id="dept" class="x-hidden-display"> 
    <tpl for="."> 
        <div> 
            <div>{deptno}</div> 
            <span >{deptName}&deg;</span> 
        </div> 
    </tpl> 
</textarea> 
  </body> 
</html>

0
1
分享到:
评论

相关推荐

    sencha touch动态加载组件

    通过学习和理解这些代码,你可以更好地掌握如何在实际项目中应用动态加载策略,提升Sencha Touch应用的性能和用户体验。 总之,Sencha Touch的动态加载组件技术对于优化移动应用性能至关重要。通过合理地运用上述...

    《SenchaTouch权威指南》源代码-

    《SenchaTouch权威指南》同书源代码 本代码清单内包括本书全部资源文件与全部代码文件,其中内容如下所示: 1.第一章至第十四章下各子文件夹,以及第十五章的15-1、15-2、15-3子文件夹中均包含开发阶段使用的index-...

    SenchaTouch权威指南示例代码

    SenchaTouch权威指南的代码示例,在本机亲自测试通过,是学习的好材料

    touch-docs-2.2.1.zip(senchaTouch 离线API参考文档)

    接下来,关于解压后的“touch-docs-2.2.1”文件夹,它是Sencha Touch的文档资源,包含以下部分: 1. **API文档**:详尽的类、方法、事件和配置项说明,帮助开发者了解每个组件和函数的具体用法。 2. **示例代码**...

    一个完整的sencha touch 应用案例

    9. **app**:这个文件夹可能是应用的源代码结构,按照Sencha Touch的约定,可能包含`views`、`models`、`stores`、`controllers`等子文件夹,分别存放对应类型的源代码。 通过以上分析,我们可以看出这个压缩包提供...

    SenchaTouch权威指南》代码清单

    SenchaTouch权威指南》代码清单

    Sencha 和 Sencha Touch 简介

    本文通过对 Sencha Touch 框架的介绍,使读者对该框架有一定的了解,并通过一些代码示例给用户更详细直观的对 Sencha Touch 框架功能的了解。 ExtJS ExtJS 是为 web 开发人员提供的基于 JavaScript 和 web 标准快速...

    Sencha Touch in Action

    《Sencha Touch in Action》是一本关于使用Sencha Touch进行跨平台移动开发的书籍,它详细介绍了Sencha Touch框架的使用方法和技巧。Sencha Touch是一个利用HTML5、CSS3和JavaScript创建移动Web应用程序的框架,它是...

    sencha touch项目源码

    8. **模板与渲染**:Sencha Touch支持使用模板(Template)来动态生成HTML,这在创建复杂视图时非常有用,例如在列表中显示城市信息。 9. **路由与导航**:如果项目涉及多页面或组件间的导航,那么可能使用到了路由...

    sencha touch list demo

    List组件是Sencha Touch中用于展示数据的视图,常用于创建诸如联系人列表、新闻摘要列表等。它可以与数据存储(Store)配合使用,实时更新显示的数据。List组件提供了多种样式和配置选项,如分组、多选、索引条等,...

    Sencha Touch2环境搭建

    4. **Sencha CMD** - 安装Sencha CMD,它是Sencha Touch开发的核心工具,提供了一系列自动化命令,如创建项目、生成组件、编译代码等。可以通过Sencha官网下载并按照指导进行安装。 接下来,我们将按照以下步骤搭建...

    sencha touch在VScode上的插件

    1. **代码智能感知**:集成Sencha Touch的API文档,为开发者提供实时的代码提示,包括类、方法、属性等。 2. **语法高亮**:对Sencha Touch的JavaScript语法进行特殊标记,使代码更易读。 3. **模板和snippet**:...

    sencha touch 登陆界面

    Sencha Touch 是一款专为移动设备设计的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,用于构建高性能的触控应用。"sencha touch 登陆界面"这个主题,主要涉及的是如何使用Sencha Touch来设计和实现一...

    Sencha Touch开发的项目《般若人生》源码

    - **app.js**:这是Sencha Touch应用的主要入口文件,通常包含应用的配置和初始化代码。 - **views**目录:存放视图组件的代码,这些组件可能包括各种屏幕或控件,如主页、详情页、设置页等。 - **models**目录:...

    sencha touch 2.4.0最新版

    10. **文档和示例**:Sencha Touch通常会提供详尽的文档和丰富的示例代码,帮助开发者快速上手和深入学习。 在"touch-2.4.0"这个压缩包文件中,包含了Sencha Touch 2.4.0的完整源码和相关资源,包括库文件、样例、...

    sencha touch sdk工具

    Sencha Touch SDK工具是开发移动应用的重要资源,尤其对于那些希望使用Sencha Touch框架构建触控友好、跨平台Web应用程序的开发者来说。Sencha Touch是一个强大的JavaScript库,它提供了丰富的UI组件和API,使得...

    《SenchaTouch权威指南》源代码及phonegap开发实例

    内含《SenchaTouch权威指南》源代码 及多个senchatouch + phonegap实例代码

    senchaTouch和fusioncharts结合的实例

    FusionCharts 提供了一些内置方法来调整图表大小,但可能需要根据Sencha Touch 的布局规则进行额外的样式调整。 6. **事件监听**:FusionCharts 支持多种交互事件,如点击图表、图例等。你可以结合Sencha Touch 的...

Global site tag (gtag.js) - Google Analytics