我的开源框架之交互控制、组件通用工具封装

需求:


  (1)后期的jquery组件具有一些通用的需求,如ajax请求,数组的处理等

  

  (2)从系统UI与服务器集成的角度看,一个系统的前端交互需要做一个统一的封装来接受用户交互,同时统一于服务器的请求

  (3)前端的日志功能需要统一

  

  (4)统一的验证入口

  

  (5)综上:我们需要一个封装了通用表单操作(表单转对象,对象填充到表单,打开一个窗口),封装系统前端的统一ajax交互,ajax交互返回格式统一以便做统一处理。

初步代码实现(后期将会根据实际需求调整)


  1 /******************************************
2 *作者:hjwen
3 *电邮:[email protected]
4 *版本:1.0
5 *说明:myui是与服务器mvc web框架集成的关键,封装了对表单的常用操作,如:表单转对象,ajax统一交互,打开一个窗口等
6 * myui也是后期组件的依赖项,组件中用到日志,ajax等功能依赖此对象
7 *版权:中国通用开源许可协议V1.0
8 ******************************************/
9 (function($){
10 /****
11 *扩展myui到jquery
12 ****/
13 $.extend({
14 myui: {
15 version: ‘1.0‘,
16 release: ‘2015.05.18‘,
17 isDebug: false,
18 /***
19 *日志,日志需要对低版本ie做特殊处理
20 ****/
21 log: function (message) {
22 if (this.isDebug) {
23 if (window.console) {
24 window.console.log(typeof message != ‘string‘ ? JSON.stringify(message) : message);
25 } else {
26 alert(typeof message != ‘string‘ ? JSON.stringify(message) : message);
27 }
28 }
29 },
30 /***
31 * 统一所有的服务器请求
32 *@param options={
33 submit:‘触发提交的元素id/jq对象‘,
34 loadingContainer:‘提示框对象/id‘,
35 url:‘地址‘,
36 async:‘true/false‘,
37 type:‘post/get‘,
38 timeout:超时默认值不设置,
39 params:‘参数key1=value1&key2=value2 ‘,
40 dataType:‘json/xml/html/text/script‘ ,//默认json
41 okdeal:function(result){alert(‘返回结果正确的处理‘);},
42 faildeal:function(result){alert(‘返回结果错误处理‘);},
43 success:function(result){alert(‘ajax请求成功的处理‘);},
44 error:function(xhr){alert(‘ajax请求错误处理‘)}
45 }
46 @return 系统返回的json 格式={code:‘状态码,0=处理ok,其他为错误‘,message:‘错误结果时的提示,如果没有错误则为空‘,data:‘返回的数据,string格式,如果是json需要再自行eval‘}
47 **/
48 ajaxRequest: function (options) {
49 if (typeof options.url === ‘undefined‘) {
50 alert("options.url未设置!");
51 return;
52 }
53 var faildeal = function (result) {
54 alert(result.message);
55 };
56 var okdeal = function (result) {
57 };
58 if (typeof options.faildeal === ‘function‘)
59 faildeal = options.faildeal;
60
61 if (typeof options.okdeal ===‘function‘)
62 okdeal = options.okdeal;
63
64 var submitObj = null;
65 if (typeof options.submit != ‘undefined‘) {
66 if (typeof options.submit === ‘string‘) {
67 submitObj = $(options.submit);
68 } else {
69 submitObj = options.submit;
70 }
71 }
72 var loadingContainer = null;
73 var loadingObj = null;
74 if (typeof options.loadingContainer != ‘undefined‘) {
75 if (typeof options.loadingContainer === ‘string‘) {
76 loadingContainer = $(options.loadingContainer);
77 } else {
78 loadingContainer = options.loadingContainer;
79 }
80 }
81 //设置默认处理
82 var ajaxOptDefault = {
83 url:options.url,
84 type: "POST",
85 dataType: ‘json‘,
86 async: true,
87 error: function (xhr, status, errorThrown) {
88 if (loadingObj != null)
89 loadingObj.remove();
90 if (submitObj != null)
91 submitObj.removeAttr(‘disabled‘);
92 alert("请求发生错误,请您稍后再试!" + xhr.responseText);
93 },
94 success: function (result) {
95 if (loadingObj != null)
96 loadingObj.remove();
97 if (submitObj != null)
98 submitObj.removeAttr(‘disabled‘);
99 if (result.code == 0) {
100 okdeal(result.data);
101 } else {
102 faildeal(result);
103 }
104 }
105 };
106 if (typeof options.async == ‘boolean‘)
107 ajaxOptDefault.async = options.async;
108 if (typeof options.type == ‘string‘)
109 ajaxOptDefault.type = options.type;
110 if (typeof options.dataType == ‘string‘)
111 ajaxOptDefault.dataType = options.dataType;
112 if (typeof options.timeout == ‘number‘)
113 ajaxOptDefault.timeout = options.timeout;
114 if (typeof options.params != ‘undefined‘)
115 ajaxOptDefault.params = options.params;
116 if (typeof options.error === ‘functon‘)
117 ajaxOptDefault.error = options.error;
118 if (typeof options.success === ‘functon‘)
119 ajaxOptDefault.success = options.success;
120 if (submitObj!=null)
121 submitObj.attr(‘disabled‘, ‘disabled‘);
122 if (loadingContainer != null)
123 loadingObj=$("<div class=‘loading icon-loading‘>正在加载......</div>").appendTo(loadingContainer);
124 $.ajax(ajaxOptDefault);
125 },
126 /***
127 * 某个html标签加载远程html文件
128 *options={
129 * target:jquery目标对象,
130 * settings = { url:‘远程地址‘,
131 * load:function(){.........} , //加载前处理事件
132 * loaded:function(result){.........} //加载后处理事件
133 * }
134 * }
135 ***/
136 objectLoadContect: function (options) {
137 var opts = options.settings;
138 if (typeof opts === ‘object‘ && typeof opts.url != ‘undefined‘ && opts.url != ‘‘) {
139 options.target.html("<div class=‘loading icon-loading‘>正在加载......</div>");
140 if (typeof opts.load === ‘function‘) {
141 opts.load();
142 }
143 options.target.load(opts.url, function () {
144 if (typeof opts.loaded === ‘function‘) {
145 opts.loaded(options.target);
146 }
147 });
148 }
149 },
150 /***
151 *填充表单
152 ****/
153 fillForm: function (options) {
154 },
155 /***
156 *表单转json对象
157 ****/
158 parseForm: function (options) {
159 },
160 /***
161 *重置表单
162 ****/
163 resetForm: function (options) {
164 },
165 /**
166 *打开窗口
167 ***/
168 openWindow: function (options) {
169 },
170 /***
171 * 按下标移除数组元素,返回新数组
172 * srcArray:源数组,indexArr:下标数组
173 ***/
174 removeArrayEle: function (srcArray, indexArr) {
175 var newArray = [];
176 for (var i = 0, len = srcArray.length; i < len;++i){
177 var nodel = true;
178 for (var j = 0, len1 = indexArr.length; j < len1; ++j) {
179 if (i == parseInt(indexArr[j]))
180 nodel=false;
181 }
182 if (nodel) {
183 newArray.push(srcArray[i]);
184 }
185 }
186 return newArray;
187 }
188 }
189 });
190 })(jQuery)

我的开源框架之交互控制、组件通用工具封装,布布扣,bubuko.com

时间: 2024-12-22 07:59:11

我的开源框架之交互控制、组件通用工具封装的相关文章

【框架】[Spring3]下载安装、开源框架与IoC控制反转详解

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 昨天刚刚初学Spring3,也许Spring3有点老了哈,不过还是先把3学了再去学习4吧,首先先介绍一下如何去下载Spring的必须包吧. (本篇博客适用于初学Spring的朋友) java spring4现在不推荐使用xml配置文件- 当然啦,这些知识点在Spring4还是可以用的. 不过我在这里详解的还是Spring3哈,见谅~ 下载SpringJAR包/文档: Spring官

《开源框架那点事儿23》:采用TinyDB组件方式开发

采用TinyDB组件方式开发 步骤 Icon 前文介绍四则运算的流程编程开发时,说过流程编排在开发重复功能时,可以利用已有的组件库快速开发.对于开发人员而言只需要简单配置流程就可以完成工作了. 开发增删改查的组件接口.本来这部分很花费时间,如果采用组件复用的话,就可以实现一次开发,终生受益. 配置curd.beans.xml和tinydb.xml. 使用流程编辑器定制组件流程curd.pageflow. 修改页面文件:list.page和operate.page,使之符合流程方式调用. 修改布局

【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)

目录 [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器开始(八) [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入式"管理的两种方案--主动查找和控制反转(九) [SSH进阶之路]一步步重构容器实现Spring框架--配置文件+反射实现IoC容器(十)(未更新) [SSH进阶之路]一步步重构容器实现Spring框架--彻底封装,实现简单灵活的Spring框架(十一)(未更新) 对于IOC的原理,我们曾经写过一篇博文,[SSH进阶之路

《开源框架那点事儿23》:採用TinyDB组件方式开发

採用TinyDB组件方式开发 步骤 Icon 前文介绍四则运算的流程编程开发时,说过流程编排在开发反复功能时.能够利用已有的组件库高速开发.对于开发者而言仅仅须要简单配置流程就能够完毕工作了.开发增删改查的组件接口.本来这部分非常花费时间,假设採用组件复用的话,就能够实现一次开发,终生受益. 配置curd.beans.xml和tinydb.xml. 使用流程编辑器定制组件流程curd.pageflow. 改动页面文件:list.page和operate.page.使之符合流程方式调用. 改动布局

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

iOS超全开源框架、项目和学习资料汇总:UI篇

上下拉刷新控件 1. MJRefresh --仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.(推荐) 2. SVPullToRefresh --下拉刷新控件4500+star,值得信赖3. CBStoreHouseRefreshControl --一个效果很酷炫的下拉刷新控件3600+star4. BreakOutToRefresh --一个下拉刷新打砖块的开源 Swift 库,能让用户在等待下拉刷新的时候

我的开源框架之面板控件

需求: (1)可伸缩.扩大.缩小 (2)可自定义工具栏(依赖工具栏控件),工具栏可定义位置 (3)可加装远程数据 实现图例 客户代码 function addMoreTools() { var toolbar = panel.panel("getToolbar"); toolbar.toolbar('addButtons', [ { id: 'btn_5', text: '按钮5', iconCls: 'icon-edit', handler: function () { alert(

iOS开发-常用第三方开源框架介绍

iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. 下载:https://github.com/mwaterfall/MWPhotoBrowser 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下G

《开源框架那些事儿22》:UI框架设计实战

UI是User Interface的缩写,通常被认为是MVC中View的部分,作用是提供跟人机交互的可视化操作界面.MVC中Model提供内容给UI进行渲染,用户通过UI框架产生响应,一般而言会由控制层调用业务逻辑进行处理,并把处理结果以Model方式返回View,再次渲染.UI框架的大致过程就是如此,按实现方式可以分为RIA和瘦客户端方式,目前基于B/S的瘦客户端方式比较流行.UI框架套路上很简单,但是想要做好可就不容易了.目前基于MVC的框架灿若繁星,不客气的说是个软件公司就有自己的技术框架