Dwz手册的补充说明和常见问题
1、我如何在项目中使用dwz?
手册中有如下说明:
设计思路
第一次打开页面时载入界面到客户端, 之后和服务器的交互只是数据交互, 不占用界面相关的网络流量. 支持HTML扩展方式来调用DWZ组件. 标准化Ajax开发, 降低Ajax开发成本.
也就是说,只需要在一个页面(通常是起始页,如index.aspx/index.php)包含框架,这里的框架是指demo中index.html页面的所有元素(<div class=”page”可自定义),完整的html结构。其它的页面只需要页面碎片,就是<body></body>中的部分。
2、怎样初始化dwz?
Dwz是通过init函数初始化,index.html的初始化函数如下:
DWZ.init("dwz.frag.xml", {
// loginUrl:"loginsub.html", loginTitle:"登录", // 弹出登录对话框
loginUrl:"login.html", // 跳到登录页面
statusCode:{ok:200, error:300, timeout:301}, //【可选】
pageInfo:{pageNum:"pageNum", numPerPage:"numPerPage", orderField:"orderField", orderDirection:"orderDirection"}, //【可选】
debug:false, // 调试模式 【true|false】
callback:function(){
initEnv();
$("#themeList").theme({themeBase:"themes"});
}
});
Dwz.init(pathToDwz_frag_xml, options);
pathToDwz_frag_xml: js方式能访问到的dwz.frag.xml,一定要保证通过这个地址能访问到dwz.frag.xml文件,最好用serverPath+dwz.frag.xml的绝对路径方式。
Options是一个对象方式的参数:
loginUrl:当ajax 的json返回timeout的时候会跳转到此页面
statusCode:自定义的json错误代码,如果不指定将使用图片所示的默认规则。
pageInfo:这里可以为pagerForm指定别名,比如pageNum:”currentPage”。
Callback:指定初始化完成后的回调函数。有人问如何在打开dwz的时候在我的主页加载另一个页面或者打开一个navTab,就可以在callback里使用navTab.open(“main”), $.pdialog.open等等。
3、我如何解析json数据来重绘表格/页面?
很多人不明白dwz的工作方式,认为dwz的navTab的页面看起来是ajax方式解析的,那就要从服务器传回json再手动解析。Dwz事实上就是这样工作的,只是他传回的不是一部分数据,而是整个页面,然后通过loadUrl加载到navTab上,这个过程对使用者是透明的,也即你不需要关心页面的数据处理,以前怎么写的页面,现在还是怎么写页面。Dwz会将普通请求转换为ajax方式(前提是正确使用dwz提供的接口)。
4、如果不是传输数据,dwz的json是用于哪里?
Dwz的服务器端响应上提到一个服务器端响应json,很多初学者问这个json如何传递数据,用于自己拼接页面等。如第3点所说,dwz的页面是不需要手动处理ajax的,这个json结构是对打开navTab,dialog, ajax表单提交、ajax post链接(ajaxTodo)状态的响应,而不涉及具体的页面数据。
5、提交表单或者ajax post链接后,如何刷新本navTab?
一定要记住在返回的json中加上要刷新的navTabId。
6、如何在ajax连接扩展中使用回调函数?
手册上没有写,其实从1.2RC1开始,ajax link就有了callback属性,用于指定回调函数,如<a target=”ajaxTodo” callback=”MyOwnFunction”。
7、如何使用table和css table的排序功能?
Table的排序功能是手册中没有提到的,其实dwz的排序功能相当强大,这里我简单介绍一下流程:
1、 给要排序的表格<table中加上asc=”asc” desc=”desc”,指定排序别名。
2、 给要排序的表格表头th加上orderField=”fieldName”属性,这样点击该表头才能出发提交事件。Th的class=”asc”/class=”desc”会分别显示向上和向下的箭头,这个不是只显示这么简单,往下看。
3、 在pageForm加上orderField和orderDirection,点击排序后提交的依然是pagerForm,orderField会绑定点击的th的orderField,而orderDirection则会反向绑定th的class,这是dwz智能的地方,也就是你不用手动记住状态来反向(感谢细心的作者),class=”asc”就会提交orderDirection = desc。注意每次要将orderDirection绑定回th的class。
8、如何使用table和css table的分页功能?
分页功能是大家用得比较多,也是不容易理解的一点。这里我凭着自己的理解给初学者讲讲。
手册上讲得很清楚,dwz不是客户端分页,而是服务器端分页,结合本文第3点可以知道dwz的分页就是每次将分页数据提交回后台,后台生成分页数据显示到页面上。需要注意的是以下几点:
1、 分页只需要pagerForm与pagination两个dwz组件,点击分页提交的是pagerForm。
2、 pagerForm用于带查询的分页数据的缓存,说缓存是因为这里的参数都需要自己手动从后台读取绑定(pageNum除外)。
3、 Pagination可以理解为一个页码生成器,他需要totalCount="200" numPerPage="20" pageNumShown="10" currentPage="1"几个参数来显示,每次后台需要绑定这几个参数,dwz不会帮你做什么事情,也就是你想他显示第几页就是第几页。
4、 点击分页,dwz将pagination的currentPage绑定到pagerForm的pagerNum,然后提交pagerForm到后台。
5、 初学者可以做这件事情来帮助理解:页面只放pagerForm和一个div和pagination,div每次显示当前的pageNum和pagination,点击分页来好好体验以下这个过程,这对第三点的理解也有帮助。
9、如何使用输入表单客户端验证?
客户端表单验证也是手册上的js库介绍中的dwz.regional.zh.js一节有介绍。结合demo中的demo_page4.html,简单明了。
10、如何使用combox的ajax联动?
手册上提及的联动方式,稍微扩展一下就可以达到ajax联动的目的。在select的change时间中,根据当前选择请求下一级的数据就可以了。注意要使用同步ajax方式。
11、如何做局部刷新?
1.3版中已经具有局部刷新功能,手册解释如下:
DWZ局部刷新怎样做?
API调用方式: $("#xxxId").loadUrl(url,data, callback); html扩展链接方式: <a href="url" target="ajax" rel="xxxId"></a>
1.2版可用loadUrl方式。
12、如何去掉dwz调用ajax方法出现的等待图片
这是作者给出的解决方式:
dwz.ui.js
var ajaxbg = $("#background,#progressBar");
ajaxbg.hide();
$(document).ajaxStart(function(){
ajaxbg.show();
}).ajaxStop(function(){
ajaxbg.hide();
});
也可以把自己的$.ajax的globle设置为false来屏蔽ajaxStart方法。
13、最后谈谈我的看法
Dwz作为一个开源的ajax前端框架,为广大的web开发者提供了极大的方便,这点对初学者可能还没有这么深刻,不过一些老程序员可是感动得一塌糊涂。可以看出,这个框架倾注了作者极大的心血,而大家的热情就是对这种奉献精神的最好回报。本人接触dwz不过区区1个月,但是一直坚持和大家一起讨论问题,就是希望有越来越多的人能够使用dwz,这样才能使其具有长久的生命力。
对于web开发老手来说,dwz很容易上手,对于新手,我想提几条建议:
1、 先要有基础的web知识,手上常备js手册和dwz手册。
2、 遇到问题先试着从手册和demo里寻找解决办法,尽量不要问手册中已经存在的问题,相信没有人会喜欢一遍一遍回答诸如navTab是什么,navTabId是什么之类的问题。
3、 相信dwz能够用于项目,现在已经有人成功了。所以放手去做吧。
4、 尽量使用最新版本,作为一个开源项目,dwz更新是平凡的,通过这种更新来消除bug,同时引入新的特性。所以请升级你的版本到最新稳定版本或RC版本。
坚持下去,你就会成功。
转自官方文档。
Dwz手册的补充说明和常见问题的更多相关文章
- Lua语言中文手册 转载自网络
Programming in LuaCopyright ® 2005, Translation Team, www.luachina.net Programming in LuaProgramming ...
- Ember.js入门教程、博文汇总
第一章 对象模型 Ember.js 入门指南——类的定义.初始化.继承 Ember.js 入门指南——类的扩展(reopen) Ember.js 入门指南——计算属性(compute properti ...
- sigaction 函数
本文主要参考<unix环境高级编程> sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作). int sigaction(int signo,con ...
- OD常用断点
OD常用断点 很全很全 常用断点 拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWi ...
- 常用汇编命令&&OD命令总结
汇编32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX)对低16位数据的存取,不会影响高16位的数据.这些低16位寄存器分别命名为:AX.BX.CX和DX,它和先前的CPU ...
- java代码示例(6-4)
创建ChangePassword.java /** * 需求分析:修改用户密码 * @author chenyanlong * 日期:2017/10/15 */ package com.hp.test ...
- MySQL单表数据不超过500万:是经验数值,还是黄金铁律?
今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢? 曾经在中国互联网技术圈广为流传着这么一个 ...
- MySQL单表最大记录数不能超过多少?
MySQL单表最大记录数不能超过多少? 很多人困惑这个问题.其实,MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身. 从性能角度来讲,MySQL单表数据不要 ...
- MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?
本文阅读时间大约3分钟. 梁桂钊 | 作者 今天,探讨一个有趣的话题:MySQL 单表数据达到多少时才需要考虑分库分表?有人说 2000 万行,也有人说 500 万行.那么,你觉得这个数值多少才合适呢 ...
随机推荐
- 【51nod】1312 最大异或和
题解 很显然我们求出一组线性基来,如果有M个基,那么可以构造N - M + 1个最大异或值 而对于线性基中的元素,除了最大的元素,我们用最大异或值异或掉每个元素累加进答案 而不是把线性基中的元素处理成 ...
- 东莞裕同&易普优APS项目启动啦!
2018年6月21日,东莞裕同&易普优APS项目启动会在东莞裕同东城厂区正式召开.裕同东莞副总经理李总.PMC张经理.集团信息中心曾总.罗经理.易普优实施总监陈总.曹经理等参加了此次会议.这是 ...
- Dubbo的特点
1.介绍 DUBBO有良好的连通性.健壮性.伸缩性.升级性.结合dubbo可以相对于单体系统提升系统整体的扩展性 2. 连通性 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在 ...
- C#基础语法补充
[学习笔记]前接:https://www.cnblogs.com/aland-1415/p/7360509.html 一.异常处理 1.格式 try{ } catch{ } catch{ } ... ...
- caffe 如何训练自己的数据图片
申明:此教程加工于caffe 如何训练自己的数据图片 一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载im ...
- Python时间日期格式化之time与datetime模块总结
1 引言 在实际开发过程中,我们经常会用到日期或者时间,那么在Python中我们怎么获取时间,以及如何将时间转换为我们需要的格式呢?在之前的开发中,也曾遇到time.datetime等模块下的不同函数 ...
- 美团 R 语言数据运营实战
一.引言 近年来,随着分布式数据处理技术的不断革新,Hive.Spark.Kylin.Impala.Presto 等工具不断推陈出新,对大数据集合的计算和存储成为现实,数据仓库/商业分析部门日益成为各 ...
- iOS Sprite Kit教程之申请和下载证书
iOS Sprite Kit教程之申请和下载证书 模拟器虽然可以实现真机上的一些功能,但是它是有局限的.例如,在模拟器上没有重力感应.相机机等.如果想要进行此方面的游戏的开发,进行程序测试时,模拟器显 ...
- [BZOJ5317][JSOI2018]部落战争(闵可夫斯基和)
对于点集$A$,$B$,闵可夫斯基和$C=\{(x1+x2,y1+y2)|(x1,x2)\in A,(y1,y2)\in B\}$.由此可知,对于两个凸包$A$,$B$的闵可夫斯基和$C$满足,$C$ ...
- BZOJ.4552.[HEOI2016/TJOI2016]排序(线段树合并/二分 线段树)
题目链接 对于序列上每一段连续区间的数我们都可以动态开点建一棵值域线段树.初始时就是\(n\)棵. 对于每次操作,我们可以将\([l,r]\)的数分别从之前它所属的若干段区间中分离出来,合并. 对于升 ...