最近在试着用YUI 2.8.1,想到一个将对话框模块化的方法,拿出来分享一下。
目的是这样的,假设在我们的应用程序中,有多个页面要使用一个一样的对话框,那么
每个页面引入一样的html和js是很不好的实现方式,这时我们可以将对话框的html存储
为一个单独的文本文件,在页面中动态地加载这段html到适当的位置,然后再展现。进一
步可以将这段js代码抽出来做一个通用的函数,这样要使用该对话框的页面只要调用这个
函数就可以了。
一下是我具体实现的代码,其中显示对话框的js已经做成一个单独的函数了,但是暂时是
放在页面里的。
对话框的html代码如下,文件名是userInfo.dlg:
<div class="hd">Title</div>
<div class="bd">
<form name="dlgUserInfoForm">
<table>
<tr>
<td width="40%"><label for="lginID">登录ID:</label></td>
<td><input type="text" name="lginID" /></td>
</tr>
<tr>
<td><label for="name">姓名:</label></td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td><label for="password">密码:</label></td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td><label for="confirmPassword">确认密码:</label></td>
<td><input type="text" name="confirmPassword" /></td>
</tr>
<tr>
<td><label for="activity">激活状态:</label></td>
<td><input type="text" name="activity" /></td>
</tr>
<tr>
<td><label for="seq">序号:</label></td>
<td><input type="text" name="seq" /></td>
</tr>
</table>
</form>
</div>
页面中有个新增用户的按钮,按下时调用showAddUserDlg():
<button onclick="showAddUserDlg()">新增用户</button>
showAddUserDlg定义如下,就是加载相应的YUI的库然后调用loadUserInfoDlg():
function showAddUserDlg() {
new YAHOO.util.YUILoader({
require: ['container', 'dragdrop', 'button'],
base: '../../js/yui_2.8.1/',
filter: 'RAW',
onSuccess: loadUserInfoDlg,
onFailure: function(o) {
alert("YUI模块加载错误: " + YAHOO.lang.dump(o));
}
}).insert();
}
loadUserInfoDlg定义如下:
function loadUserInfoDlg() {
YAHOO.util.Connect.asyncRequest(
"GET",
"userInfo.dlg",
{
success: function(o) {
YAHOO.util.Dom.get("dlgUserInfo").innerHTML = o.responseText;
var handleCancel = function() {
};
var handleSubmit = function() {
};
var btns = [
{ text: "增加", handler: handleSubmit, isDefault: true },
{ text: "放弃", handler: handleCancel }
];
var cfg = {
fixedcenter : true,
constraintoviewport : true,
visible : false,
width : "400px",
buttons : btns
}
var dlg = new YAHOO.widget.Dialog('dlgUserInfo', cfg);
dlg.setHeader("增加用户");
dlg.render();
dlg.show();
},
failure: function(o) {
alert('用户信息模块加载失败' + + YAHOO.lang.dump(o));
}
}
);
}
其实可以将标题、按钮,大小等配置信息传入,这样每个页面可以显示稍微不同的对话框。
更进一步,利用这种机制,可以用一个对话框做到数据新增、修改、显示等三个常用功能,下
一步实现了这种方式我再把代码贴出来。
欢迎指正。
分享到:
相关推荐
1. **模块化设计**:YUI采用模块化的结构,允许开发者按需加载所需的组件,减少页面加载时间,提高性能。 2. **跨浏览器兼容性**:YUI经过精心设计,确保在主流浏览器上都能正常运行,包括IE、Firefox、Chrome、...
1. **模块化**:YUI采用AMD(Asynchronous Module Definition)模块加载机制,允许异步加载和依赖管理,使得代码组织清晰,便于维护。 2. **响应式设计**:YUI提供了响应式设计工具,如Grids布局系统,能根据屏幕...
YUI 3的设计目标是模块化和轻量化,它引入了模块系统,使得开发者可以根据需要只加载必要的组件,从而降低页面加载时间。在3.1.2版本中,这一特性得到了充分的体现。源码中的每个模块都是独立的,通过AMD...
在YUI3中,首先需要通过`YUI().use()`方法加载Dialog相关的模块,例如: ```javascript YUI().use('dialog', function(Y) { // 在这里编写Dialog的代码 }); ``` 然后可以创建Dialog实例,指定其内容和属性: ```...
YUI 2.6.0r2版本在当时的JavaScript社区中占有重要地位,它提供了大量的可重用模块,涵盖了DOM操作、事件处理、动画效果、Ajax交互、CSS样式管理、数据处理等多个领域。这个版本修复了之前的一些已知问题,增强了...
6. **用户界面组件**:YUI提供了各种UI组件,如日历(Calendar)、菜单(Menu)、对话框(Dialog)、按钮(Button)、滑块(Slider)等,这些组件可以方便地集成到网页中,提升用户体验。 **二、YUI的模块化特性** ...
书中可能会详细讲解如何快速引入YUI库到项目中,设置正确的加载顺序,以及如何利用YUI的模块化结构来组织代码,提高代码复用性。此外,它还会涉及如何使用YUI的事件系统,使页面元素间的交互更加流畅。 其次,关于...
YUI采用了模块化的设计,每个功能都被封装为一个模块,开发者可以根据项目需求按需加载,减少不必要的资源加载,提高页面性能。`YUI.use`方法用于加载所需的模块,同时保证了模块间的依赖关系得到正确处理。 八、...
首先,`Overlay`是`YUI3`中的一个基础组件,它提供了一种弹出式的窗口效果,可以用于创建模态对话框、提示信息等。`Overlay`可以通过设置其尺寸、位置、可见性等属性来定制,以满足不同的需求。 接着,我们要在`...
7. **模块化开发**:YUI采用了模块化设计,允许开发者按需加载所需的功能,减少页面的加载时间。通过YUI Loader,可以自动化处理依赖关系,确保正确加载和执行脚本。 8. **兼容性**:考虑到JavaScript的跨浏览器...
YUI的特点在于其模块化设计,开发者可以根据项目需求选择需要的模块,避免了不必要的资源加载,提高了性能。此外,YUI还支持CSS3和响应式设计,使得开发跨平台、适应不同设备的UI变得更加便捷。 接下来,jQueryUI是...
DWZ框架具备良好的兼容性、模块化和扩展性,能够帮助开发者快速构建具有丰富交互功能的Web界面。 DWZ框架的设计思路着眼于提供一套简洁、高效、易于使用的前端开发解决方案。与其它JavaScript框架相比,DWZ的最大...
- **MooTools**:MooTools是一个小巧而功能强大的JavaScript框架,它以简洁的语法和高度模块化的设计而受到开发者的喜爱。与Prototype类似,MooTools的核心语法也十分相似,但使用起来更为轻便,使得开发者能够在不...
这些库都有各自独特的优点,例如Dojo Toolkit提供全面的模块化开发,YUI注重性能和兼容性,而KnockoutJS专注于MVVM(Model-View-ViewModel)模式,方便数据绑定和动态界面更新。 在实际开发中,选择合适的Ajax UI库...
9. **Prototype UI**:基于Prototype和Script.aculo.us,包含多个模块,如旋转木马、模态窗口、阴影和右键菜单,每个模块可独立使用。 10. **Jitsu**:Jitsu提供了XML标记、页面编译、动画引擎和Ajax功能,简化了...
- **MooTools**:轻量级且模块化的框架,强调面向对象编程。 - **ExtJS**:主要创建前端用户界面,原为YUI扩展,现为付费库。 **jQuery的使用配置** 1. **获取jQuery**:可以从官网(http://jquery.com/)下载最新...
Dojo是一个用于构建高性能JavaScript应用程序的框架,其特点是轻量级、模块化: - **模块化设计**:按需加载所需的模块,减小应用程序体积。 - **数据可视化**:提供图表和其他可视化工具,帮助展示数据。 - **移动...
- **MooTools**:轻量级且模块化的框架,强调面向对象的编程。 - **Dojo**:提供了一些其他库没有的独特功能,如离线存储和图标组件。 - **ExtJS**:主要关注前端用户界面的创建,最初是对YUI的扩展,但后来成为独立...
此外,Qt提供了一系列的开发工具,如KDevelop、QDevelop、Qt Creator和qt-designer,以及在Eclipse中集成的插件,方便开发者进行图形化界面设计和代码编写。 Qt的核心机制包括对话框、窗体、窗体布局、槽和信号以及...