- 浏览: 584551 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (268)
- ext基础 (72)
- Java基础 (68)
- jquery (14)
- oracle (21)
- sqlserver (7)
- linux (2)
- webserver (1)
- C/C++ (1)
- sql (9)
- IDE (2)
- java 智能卡 (1)
- mysql (6)
- ibatis (2)
- struts2 (3)
- cvs (1)
- 服务器 (1)
- html (11)
- freemarker (4)
- liferay (2)
- jMS (1)
- iphone (1)
- c# (1)
- Android (11)
- wince (6)
- javascript (4)
- ps (1)
- hibernate (1)
- 其他 (3)
最新评论
-
ilyq:
请问,px.gif 在哪里
斜线表头 -
jisang:
没看懂,第一个org.js和最后的js什么关系,可否发我一份完 ...
用ExtJS 实现动态载入树(Load tree) -
JavaStudyEye:
我去,能否搞个正确点的,,,
<#list ...
freemarker 遍历map 对象 -
PangSir:
大爱,简直是大爱!!困扰这么久以来的问题,虽然知道是CSS的问 ...
ExtJs checkbox radiobox 问题 汇总 -
skynet_java:
有demo嘛!邮箱:think_world@foxmail.c ...
消息推送服务需求 - 服务器开发、客户端开发
最近开发项目用到ext,不想使用iframe,在参考了大量文章以后使用eval的方式,来模块化js代码,实现框架页
主页面的js代码 main.js
Js代码
**********************************************************************************
转:http://rainytooo.iteye.com/blog/617765
主页面的js代码 main.js
Js代码
**********************************************************************************
**************************************************************************************引用// 页面加载开始 // 定义一个锁屏的遮罩 因为树菜单是异步读取的 var myMask_info = "加载数据中,请稍后..."; var myMask = new Ext.LoadMask(Ext.getBody(), {msg:myMask_info}); // 模块的数组 用来缓存模块function的 var moduleArray = {}; Ext.onReady( function() { Ext.QuickTips.init(); // 加载锁屏 loadmask myMask.show(); // 动态获取树节点 这里ajax使用的是dwr(直接输出json数据) 异步加载使用的是第三方的DWRTreeLoader var dwrloader = new Ext.ux.DWRTreeLoader({ dwrCall:AsyncMainSev.getUserFuncTreeJSON }); // 主页面上初始化一个Tab面板 var contentPanel = new Ext.TabPanel({ region:'center', enableTabScroll:true, activeTab:0, items:[{ id:'homePage', title:'首页', autoScroll:true, closable:true, html:'<iframe id="frame_main" src="pages/main/child1.html" width="100%" height="400" frameborder="0" scrolling="auto"></iframe>' }] }); var _tree = new Ext.tree.TreePanel({ id:'forum-tree', region:'west', title:'功能菜单', split:true, width: 325, minSize: 175, maxSize: 400, collapsible: true, margins:'0 0 5 5', rootVisible:false, lines:false, // selModel: new Ext.tree.MultiSelectionModel(), autoScroll:true, loader: dwrloader, root: new Ext.tree.AsyncTreeNode({text:'root',hasChildren:true,id: '0'}) /*listeners: { 'checkchange': function(node, checked){ if(checked){ node.getUI().addClass('complete'); }else{ node.getUI().removeClass('complete'); } } }*/ }); //加载完成事件 隐藏掉锁屏loadmask _tree.addListener("load",function(){myMask.hide();}); /**以下代码用来给叶子节点添加事件**/ var tree = Ext.getCmp('forum-tree'); /* var sm = tree.getSelectionModel(); sm.on('selectionchange', function(sm, node){ //console.log(node.attributes.attributes.url); // 测试iframe的方式 而注释掉 var n = contentPanel.getComponent(node.id); if (!n) { ////判断是否已经打开该面板 n = contentPanel.add({ 'id':node.id, 'title':node.text, closable:true, autoLoad:{url:node.attributes.attributes.url, scripts:true} //通过autoLoad属性载入目标页,如果要用到脚本,必须加上scripts属性 }); } contentPanel.setActiveTab(n); var n = contentPanel.getComponent(node.id); if(!n){ n = contentPanel.add({ id:node.id, title:node.text, autoScroll:true, closable:true, html:'<iframe id="frame_main" src="' + node.attributes.attributes.url + '" width="100%" height="400" frameborder="0" scrolling="auto"></iframe>' }); } contentPanel.setActiveTab(n); }); */ // 10-03-02 再次修改为tree.on方法 取消原来的在selectionmodel上做 /* tree.on('click', function(node){ // 如果是叶子节点 if ( node.isLeaf() ){ // 得到节点对象Ext.tree.TreeNode var n = contentPanel.getComponent(node.id); // 如果不存在 在TabPanel上添加一个tab 挂载iframe页面 if(!n){ n = contentPanel.add({ id:node.id, title:node.text, autoScroll:true, closable:true, html:'<iframe id="frame_main" src="' + node.attributes.attributes.url + '" width="100%" height="400" frameborder="0" scrolling="auto"></iframe>' }); } // 激活 contentPanel.setActiveTab(n); } }); */ // 10-03-15 再次修改 实验性修改为之加载外部文件js 不使用框架页了 tree.on('click', function(node){ myMask.show(); var nodeattr = node.attributes.attributes; // 如果是叶子节点 if ( node.isLeaf() ){ // 获取这个模块的id var moduleId = nodeattr.module_name; var n = contentPanel.getComponent(moduleId); // 如果不存在 在TabPanel上添加一个tab id为模块的id if(!n){ // 如果数组里初始化过此module if( moduleArray[moduleId] != undefined ){ var module = moduleArray[moduleId]; var moduleInstance = new module(); var outCmp = contentPanel.add(moduleInstance); contentPanel.setActiveTab(outCmp); myMask.hide(); }else{ // ajax请求 来eval一段module的代码 并执行 然后加到tabpanel上 Ext.Ajax.request({ method: 'GET', url: nodeattr.js_source, success: function(response){ var module = eval(response.responseText); moduleArray[moduleId] = module; var moduleInstance = new module(); var outCmp = contentPanel.add(moduleInstance); contentPanel.setActiveTab(outCmp); myMask.hide(); } }); } } // 获取js代码的绝对路径 } }); // 开始渲染整个面板 并整合定义好的tree和TabPanel组建 var viewport = new Ext.Viewport( { layout : 'border', items : [ { xtype: 'box', region: 'north', height: 30 }, _tree, contentPanel ] }); });******************************************************************************* ajax请求的js代码的路径是写到了节点node的属性里,在初始化树节点的时候就已经动态的写好了 一个子模块的示例 用户管理 useradmin.js ************************************************************************************* // 用户管理模块 Ext.extend(Ext.Panel, { constructor: function(config) { // 表格模型 var cm = new Ext.grid.ColumnModel([ { id: 'username', header: "姓名", dataIndex: 'username', width: 100 },{ id: 'email', header: "电子邮件", dataIndex: 'email', width: 100 },{ id: 'createdate', header: "注册时间", dataIndex: 'createdate', width: 100 },{ id: 'updatedate', header: "修改时间", dataIndex: 'updatedate', width: 100 }]); //console.log(basePath+'campaign/id/review'); // 数据来源储存 var user_store = new Ext.data.Store({ url: basePath+'users/ajaxserv', reader: new Ext.data.JsonReader({ root: 'users', totalProperty: 'totalCount', id: 'id' }, [ 'username', 'email', 'createdate', 'updatedate' ]) }); cm.defaultSortable = true; user_store.load(); config = Ext.apply({ id: 'm_useradmin', title: '用户管理', autoScroll: true, closable:true , items:[ new Ext.grid.GridPanel({ store: user_store, cm: cm, stripeRows: true, height: 350, //width: 800, autoWidth : true, loadMask: {msg:'正在加载数据,请稍后'}, title: '用户列表' , tbar: [{ text: '添加', iconCls: 'new-item', tooltip: { title:'添加用户', text:'在此系统中注册一个新的用户'} }], bbar: new Ext.PagingToolbar({ pageSize: 25, store: user_store, displayInfo: true, displayMsg: '显示记录 {0} - {1} of {2}', emptyMsg: "没有任何记录" }) }) ] }, config); module.superclass.constructor.call(this, config); } });
转:http://rainytooo.iteye.com/blog/617765
发表评论
-
将博客搬至CSDN
2023-02-06 16:57 120https://www.iteye.com/blog/user ... -
Liferay Portal 应用之开发(1)
2012-02-27 14:09 17411.下载安装Eclipse Eclipse ... -
liferay Portal (1) 应用之配置
2012-02-27 13:59 1240Liferay Portal缺省只有一 ... -
ext form
2011-05-18 15:25 932//grid1定义的grid var record = gr ... -
combox
2011-04-27 10:55 15401.服务器数据作为ComboBox的数据源 实例 首先从服务 ... -
ext grid 单元格
2010-12-29 11:17 969listeners : { cellcli ... -
combox 默认值
2010-12-20 10:35 2963[ {"abbr":&quo ... -
Ext.DateField 格式
2010-12-17 10:11 1405Ext.DatePicker,该类为我们提供了一个占地面积很广 ... -
extjs的grid控件如何根据值来设置某行的背景颜色
2010-12-17 09:40 8036根据不同的值来设置grid的背景颜色 在viewConfig ... -
动态组件
2010-12-16 17:05 971Ext.onReady(function() { ... -
js 获取路径
2010-12-13 19:02 1346<br>以下为输出: <br> ... -
矫正对象 信息登记
2010-12-08 14:10 885矫正对象登记 { frame : true ... -
转 ext Demo
2010-12-05 13:17 1426下面这个是主界面的设计 Ext.onReady(funct ... -
下拉框 控制 列是否可读
2010-11-12 08:33 1055Ext EditorGrid单元格控制小记 http://d ... -
extjs formpanel 怎么显示图片
2010-10-02 10:13 3498//可加普通的panel,html属性直接添加html代码 ... -
动态 改变 column样式
2010-09-30 16:35 1099grid.getView().getCell(rowNum , ... -
js 应用
2010-09-29 14:38 973JS里 面的new Date("xxxx/xx/xx ... -
grid 表头 鼠标事件
2010-09-24 16:04 1852grid.addListener("cellclic ... -
格式化
2010-08-26 00:32 1420//创建edgrid.js Ext.onReady(func ... -
ext (增 ,删,改 ,查,导出excel)
2010-08-26 00:03 1808下面为扩张grid的 代码 ...
相关推荐
这是一个非常轻量的单页面框架,仅仅依赖Zepto,路由模块、事件绑定模块,doc模版解析, 参考、使用了微信小程序和VUE的用法。
mobile-router.js 是轻量级web端单页面框架。 优势: 使用简单、方便、轻量,基于 history、window.onpopstate。 支持路由视图嵌套 (1.5.0 )。 无依赖,可与其他框架(库)搭配自由使用,例如:jquery, zepto, ...
react16.0 webpack3.8 最新单页面集成框架
require("aSingle")单页面框架,多页面开发,引入aSingle即可,设置window.aSingle_disable = true,即可关闭单页面,使用多页面跳转。缺省属性是data-asingle=1点击跳转</a><a>当前页面replace替换页面切换,保存了...
rsnc.js是一个客户端单页面框架,用于以最小的努力快速开发大型复杂的Web应用程序。 无论您的小部件是什么样,所有组件类都遵循相同的基本API。 主题化是通过简单的特定于组件和主题的html和css模板完成的。 可以仅...
基于mui框架开发的单页面应用框架(含demo),实现页面跳转路由,单页面开发html应用,避免页面跳转导致的用户体验差的问题
abyssa-js, 框架无关的单页面应用程序分层路由器 用于单页面应用程序的分层路由器库。电子邮件内容简介安装工具过渡模式API插件路由器状态StateWithParams锚拦截设备代码示例cookbook删除路由器 <> 状态循环依赖项中
基于 layui 实现的单页面控台, 类似于 layuiAdmin 后台管理模板. 功能待后续完善, 主要是看单页面的实现原理
react单页面应用react单页面应用react单页面应用
单页面打印框架A Single Page Printing Framework
框架没有复杂的概念与特性,不依赖开发环境(如node.js等),都是最基本JavaScript语法,也就是说读者只要有JavaScript语言基础,就可以很快学会使用 Alpaca-spa.js框架用来构建前端页面。 2.使用 Alpaca-spa-2.1.js...
它允许开发人员在一个框架中通过常用的习惯用语和最佳实践来创建可伸缩的单页面应用程序。该框架提供丰富的对象模型、声明性双向数据绑定、计算属性,Handlebars.js提供的自动更新模板,以及一个路由器管理应用程序...
jQuery-SPA描述基于jQuery的单页应用开发框架。产生原因之前在很多前端群里面发现非北上广深小伙伴在实际工作中,很多还都以jQuery作为主要技术选型,而基于jQuery的单页应用也比较少见,因此抽空将两年前我们前端用...
Dalyan is a single page application project template using AngularJS, ASP.NET & Web API technologies. It is the base of a web application project. It has CRUD operation example with AngularJS....
关于一个activity实现多页面的跳转的框架,很好用的。
Blazor是一个实验性的单页面应用程序框架,用于使用.NET和WebAssembly构建客户端Web应用程序。 在本次研讨会中,我们将构建一个完整的Blazor应用程序,并在此过程中了解各种Blazor框架功能。
该项目使用struts2、hibernate和spring三个框架进行整合,实现对单表的jsp页面的增删改查操作
Dalyan is a single page application project template using AngularJS, ASP.NET & Web API technologies. It is the base of a web application project. It has CRUD operation example with AngularJS....
主要实现了Fragment与buttonGroup结合,做成5个页面相互切换的模式。单个页面内容可根据实际添加,即是app实现的页面框架
单页面web应用程序,优秀的SPA应用的构成,MV框架介绍,JavaScript模块化,单页面导航,视图合成与布局,模块间的交互,与服务器通信,单元测试,任务自动化