js Dialog 实践分享


Posted in Javascript onOctober 22, 2012

分析:

1.       Dialog的生命周期:

js Dialog 实践分享

2.       Dialog的结构:标题、内容(DOM)、数据、提交栏、关闭按钮

js Dialog 实践分享


显示以及加载数据

1.       Content 作为页面代码隐藏到页面中,Dialog显示后,将数据(Json对象)赋值到Dialog

1) 优点:实现最为简单

2) 缺点:加载页面时,页面代码多,如果未发生Dialog操作,这部分Dom不会被用到,如果弹出的Dialog种类过多,那么页面的隐藏代码会大大增加页面大小;

2.       Contetn作为单独的页面(代码块,类似于MVC中的partialView, Dialog第一次弹出时,请求页面显示在Dialog中,并将数(Json对象)据赋值到Dialog

1) 优点:可以减少页面大小,仅在需要弹出Dialog时加载对应的内容。

2) 缺点:首次打开一个Dialog时,需要加载页面,有延迟效果,降低用户体验。

3.       Contetn作为单独的页面(代码块,类似于MVC中的partialView),每一次弹出Dialog时请求页面,数据连同页面一起渲染,然后显示在Dialog

1) 优点:几乎所有的后台框架都有数据渲染机制,可以方便的渲染编辑的内容,降低前端代码的耦合。

2) 缺点:每次弹出Dialog需要重新加载对应的内容和数据。

提交

1.       异步提交,将数据序列化,使用Ajax(或者iframe)方式提交到后台,然后返回json表示成功或者失败。根据结果改变List记录

1) 优点:使用Ajax进行数据传输,不刷新页面,可以保留页面状态。

2) 缺点: 需要跟后台进行耦合,根据后台结果显示成功或错误信息。需要协调前后台的验证和错误显示。

2.       Form表单提交,直接将表单提交到后台,刷新整个页面

1)       优点:直接刷新页面,逻辑简单。

2)       缺点: 页面状态丢失,如果在搜索页面,需要回写各项输入;错误回显复杂,因为Dialog是前台js弹出,如果在Dialog上显示数据,那么需要弹出Dialog

隐藏

1.       Dialog 关闭后,Dialog仅仅是隐藏

1)       优点:实现简单,显示Dialog的逻辑也会变简单。

2)       缺点:多个Dialog状态下,页面以及内存中有多个Dialog对象,依赖于加载数据和内容方式,如果每次打开Dialog都加载新的内容(DOM),那么也会增加复杂度。

2.       Dialog 关闭后,释放Dialog对象

1) 优点:每次打开新的Dialog,都是独立的操作,逻辑上简单

2) 缺点:增加了复杂度,每次关闭Dialog时,需要将内容(DOM)缓存起来,清除状态,在下一次显示Dialog时重新加载,如果每次打开Dialog都加载新的内容(DOM),可直接释放Dialog中的内容(DOM)

实践

1.       加载的第一种,将Dialog内容(DOM)事先隐藏在页面中,编辑完数据后异步提交数据,这种方式我们在项目中使用的最多,只要处理好显示数据,错误回传显示,基本能满足日常应用。

2.       加载的第三种方式,在一些框架的支持下会非常的自然,在.netMVC框架中,ViewModel的集成,验证规则的统一性处理,可以是开发成本降到最低。

3.       数据的异步提交还是Form提交,需要看具体情况,如果是搜索页面,需要回传大量页面状态则最好使用异步提交方式,否则只是刷新页面,表单提交方式更为自然。

总结

1.       如果你是控件的编写者,最好Dialog全部实现上述功能,能满足更多的场景

2.       如果你是控件的使用者,根据具体情况,配置Dialog,得到自己的效果。

3.       错误处理和显示将是你在这个过程中遇到最麻烦的事情。

Javascript 相关文章推荐
JQuery自定义事件的应用 JQuery最佳实践
Aug 01 Javascript
jQuery 表单验证扩展(四)
Oct 20 Javascript
JavaScript入门之基本函数详解
Oct 21 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
JS防止用户多次提交的简单代码
Aug 01 Javascript
使用iojs的jsdom库实现同步系统时间
Apr 20 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
微信小程序提取公用函数到util.js及使用方法示例
Jan 10 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
Feb 13 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 Javascript
微信小程序request请求封装,验签代码实例
Dec 04 Javascript
JS控件的生命周期介绍
Oct 22 #Javascript
重写javascript中window.confirm的行为
Oct 21 #Javascript
js indexOf()定义和用法
Oct 21 #Javascript
javascript window.confirm确认 取消对话框实现代码小结
Oct 21 #Javascript
基于jquery DOM写的类似微博发布的效果
Oct 20 #Javascript
JS的replace方法介绍
Oct 20 #Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 #Javascript
You might like
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
用PHP书写安全的脚本代码
2012/02/05 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2019/02/21 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
python发布模块的步骤分享
2014/02/21 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
对Python函数设计规范详解
2019/07/19 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
物流管理专业应届生求职信
2013/11/21 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
计算机实训报告总结
2014/11/05 职场文书
英文升职感谢信
2015/01/23 职场文书
怎样写离婚协议书
2015/01/26 职场文书
经营场所证明范本
2015/06/19 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书