Extjs Desktop桌面开始菜单动态生成ExtJs框架是目前市面上选用比较成熟的js框架,具有诸多优点特殊适合用来实现有的内部的管理消息系统.ExtJs提供了一套组件来研究类似于windows桌面的单页面系统,之中desktop桌面的开始菜单根据后台提供的资料动态生成也是一个难点,下面将对desktop桌面动态开始菜单的生成进行讲解。
ExtJs官网提供了desktop桌面的demo,之中关于开始菜单的生成是静态的方法,在js脚本中设置好了特定的开始菜单内容再生成开始菜单。<font color=red>本文的教学内容均是在官网demo基天津高考优势还大吗本上进行的改写</font>
整个需要改进的脚本只有两个一个是根目录下的软件.js以及BogusModule.js,前台与后台之间通过Ajax交互,资料交换个是为json
后台定义了Mids类,如下所示:
public class Mids { private String mid; //菜单id private String text; //菜单名词 private String path; //菜单路径 private List<Mid> subs; //子菜单 //Mid作为Mids内部类 public class Mid { private String mid; private String text; private String path; }}因此前后台交互的json数组示比如下:
[{mid:”m1”,text:”菜单1”,path:”/m1”,subs:null},{mid:”m2”,text:”菜单2”,path:”/m1”,subs:[mid:”m21”,text:”菜单21”,path:”/m21”}]
接下来我们就要改写软件.js这种js文件
getModules : function(){// return [// //new MyDesktop.Blockalanche(),// //new MyDesktop.BogusMenuModule(),// //new MyDesktop.BogusModule()// // ]; return mArr;},//寻找这段代码并注释掉部分行并改写为return mArr,之中mArr就是开始菜单模块会在另外一个js文件中定义下面我们就就这样看核心的BogusModule.js这种文件,这种文件定义了开始菜单的生成方法和类别
//首先需要定义一个模块类别MyDesktop.BogusModuleExt.define( ‘MyDesktop.BogusModule’, { extend: ‘Ext.ux.desktop.Module’, init:function () {}, createWindow: function (obj) { var desktop = this.app.getDesktop(); createWindow(desktop,obj);//该途径另外定义 } });菜单数组以及Menu模型与后台传递的json资料进行绑定
var mArr = [];Ext.define(‘Menu’, { extend: ‘Ext.data.Model’, fields: [‘mid’, ‘text’, ‘path’,’subs’]});// 定义了一个store选用Ajax方法与后台进行是资料交互store进行资料加载并实现开始菜单动态加载和绑定,并且生成桌面
var store = Ext.create(‘Ext.data.Store’, { model: ‘Menu’, proxy: { type: ‘ajax’, url后鼻音韵母: ‘menu’, reader: ‘json’ }});store.load({scope: this,callback: function (r, op, success) { if (success) { for (var i = 0; i < r.length; i++) { var menu = Ext.define(‘MyDesktop.materialMenu’, { extend: ‘MyDesktop.BogusModule’, init: function () { var mm=this; //判断是否有子菜单,有子菜单则设置为点一下无效 if (r[i].data.subs) { mm.launcher = { text: r[i].data.text, iconCls: ‘bogus’, handler: function () { //有子菜单则点一下无效 return fal; }, menu: {items: []} }; //遍历子菜单资料并生成子菜单项 Ext.Array.each(r[i].data.subs, function (m, index, allItems) { mm.launcher.menu.items.push({ text: m.text, iconCls: ‘bogus’, handler: function (src) { var desktop = mm.app.getDesktop(); createWindow(desktop,src); }, //scope: this, src: m.path, windowId: 房屋出售协议书m.mid }); }); } el { //没有子菜单则设置点一下打开窗口 mm.launcher = { text: r[i].data.text, iconCls: ‘bogus’, handler: this.createWindow, scope: this, src: r[i].data.path, windowId: r[i].data.mid }; } } }); mArr.push(new menu()); } // 生成桌面 var myDesktop软件; Ext.onReady(function () { myDesktop软件 = new MyDesktop.软件(); }); }}});定义对应的打开窗口模块,每一个窗口模块均内嵌了一个iframe,通过该iframe可以加载其它页面内容
function createWindow(desktop,obj) {var win = desktop.getWindow(‘bogus’ + obj.windowId);if (!win) { var iframeId = ‘bogus_’ + obj.windowId; win = desktop .createWindow({ id: ‘bogus’ + obj.windowId, title: obj.text, //width: 800, //height: 600, maximizable: true, maximized: true, closable: true, resizable: true, html: “<iframe id='” + iframeId + “‘ style=’width:100%;h牛顿简介eight:100%;border:0px;margin:0px;padding:0px;’ frameborder=’0′ src=”></iframe>”, iconCls: ‘bogus’, animCollap: fal, constrainHeader: true, listeners: { afterrender: function () { document .getElementById(iframeId).src = obj.src; } }, buttons: [ { text: ‘刷新窗口内容’, handler: function () { document .getElementById(iframeId).src = obj.src; } }, { text: ‘更换窗口大小’, handler: functionitunes同步音乐 () { win.toggleMaximize(); } }, { text: ‘关闭’, handler: function () { win.clo(); } }] });}win.show();return win;}这样就完成了ExtJs桌面的动态开始菜单生成
本文发布于:2023-03-31 14:43:18,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/db6ceab0b8da195177eec0dbc267a074.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:ExtJs Desktop桌面开始菜单动态生成.doc
本文 PDF 下载地址:ExtJs Desktop桌面开始菜单动态生成.pdf
留言与评论(共有 0 条评论) |