sui.js和workflow2.js内容详解
一、

二、
var config=$("div[name=lwnf]").sui().getConfig()~var config = this.zoo.getConfig();等同

三、注册组件

var zoos = {};
		function register(name, com){
			com.prototype = Zoo;
			zoos[name.toLowerCase()] = com;
		}
"com" 为函数或者说是对象
注册的组件都可以用 $(selector).sui().methodname()或者this.zoo.methodname()调取方法。
注册组件就是对已有的封装使用 包括各种验证 属性设置
富文本编辑器 wangEdit
上传编辑删除

sui.js
function render(data){
        	addBtn(data);
        	$.each(data, function(index, item) {
        		var $tr = buildTr(item);
        		$tableBody.append($tr);
        		SUI.init($.noop, $tr);
        		if(typeof config.onRenderRow === "function"){
        			config.onRenderRow.call(dom, $tr[0], item);
        		}
        	});
        }
SUI.init($.noop, $tr);
function init(callback, context){
			for(var type in zoos){
				var zooDefine = $(".sui-" + type, context);
				zooDefine.each(function(){
					build(this);
				});
			}
			$.type(callback)==="function"&&callback();
		}
build(this);
function build(element, type){
			if($(element).sui()){
				return element;
			}
			if(!type){
				var suitype = element.className.match(/sui-(\S+)/i);  //   / ../i  忽略大小写  \S非空白字符  \s空白字符  match匹配正则,返回数组    
				if(suitype&&suitype[1]){
					type = suitype[1];
				}else{
					return element;
				}
			}
			var el = create(type, element);
			var isui = $(el).attr("isui");
			if(!isui){
				$(el).attr("sui",true);
			}
			var conf = el.zoo.parse(element);
			el.zoo.init(conf);
			$(el).on('change', function(){
				var _conf = el.zoo.getConfig();
				if(_conf&&_conf.mode=="editable"&&_conf.validate){
					el.zoo.validate();
				}
			});
			return el;
		}
create(type, element)
function create(type, dom){
			type = type.toLowerCase();
			var element = new zoos[type](dom);
			element.zoo.type = type;
			$(element).addClass('sui-component sui-'+type);   //  addclass()方法,如果是添加多个类名(空格隔开),如果原class已经存在类名,就会被隐藏。
			return element;
		}
function register(name, com){
			com.prototype = Zoo;
			zoos[name.toLowerCase()] = com;
		}
workflow2.js
加载流程

设置属性值

//回填数据
				if(callback) callback(entity,function(data){
					form.sui().setValue(data);
				});
workflow2.js中调用sui的方法
var entity = $.extend(true, {}, this.entity);
			SUI.init(function(){
				var workItem = _this.workflow.workItem ||{};
				//初始化下一步
				var activityTree = _this.workflow.activityTree;
				var partis = $(".sui-participates").sui();
				var morePartis = $(".sui-moreparticipates").sui();
				if(partis && activityTree){
					var attrs = activityTree.exts?activityTree.exts.attrs : {};
					var attach = attrs.attach;
					var config = partis.getConfig();
					config.tree = activityTree;
					config.process = workItem.processDefName;
					config.processInstId = workItem.processInstID;
					config.properties.attach = attach;
config.processExt = _this.workflow.processDefExt.attrs;
config.properties.opinionAtTop = attrs.opinionAtTop;
partis.setConfig(config);
				}
				if(morePartis && activityTree){
					var attrs = activityTree.exts?activityTree.exts.attrs : {};
					var attach = attrs.attach;
					var config = morePartis.getConfig();
					config.tree = activityTree;
					config.process = workItem.processDefName;
					config.processInstId = workItem.processInstID;
					config.properties.attach = attach;
					config.processExt = _this.workflow.processDefExt.attrs;
					config.properties.opinionAtTop = attrs.opinionAtTop;
					morePartis.setConfig(config);
				}
if($(".sui-multiopinion").length>0){
					$(".sui-multiopinion").each(function(){
						var config = $(this).sui().getConfig();
						config.properties.workItemId = initConfig.workItemId;
						$(this).sui().setConfig(config);
					});
				}
//回填数据 这是调用form组件中的方法form.sui().setValue(data);
if(callback) callback(entity,function(data){
					form.sui().setValue(data);
				});
			});
//form表单组件
获取data对象的对应的属性值
function getDataValue(data, name){
			if(!name){
				return;
			}
			var splits = name.split(".");
			var temp = data;
			for(var i =0; i < splits.length; i++){
				var key = splits[i];
				temp = temp[key];  //   获取对象的属性的方法有二:  1是用“.name” 2是 [name]
				if(!temp){
					break;
				}
			}
			return temp;
		}
回填数据的方法 , 这是真正的回填数据,上面的只是调用。
this.setValue = function(data){
			value = data;
			var children = [];
			getChildren(dom, children);
			$.each(children, function(i, el){
				var zoo = el.zoo;
				var val = getDataValue(data, zoo.name);
				if(zoo.notForm|| typeof val ==="undefined" || val==="undefined"){
					return;
				}
				zoo.setValue(val);
			});
		}
sui.js和workflow2.js内容详解的更多相关文章
- js中鼠标滚轮事件详解
		
js中鼠标滚轮事件详解 (以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用 ...
 - ext.js的mvc开发模式详解
		
ext.js的mvc开发模式详解和环境配置 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开 ...
 - 微信JS接口汇总及使用详解
		
这篇文章主要介绍了微信JS接口汇总及使用详解,十分的全面.详尽,包含分享到朋友圈,分享给朋友,分享到QQ,拍照或从手机相册中选图,识别音频并返回识别结果,使用微信内置地图查看位置等接口,有需要的小伙伴 ...
 - js对象浅拷贝和深拷贝详解
		
js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具 ...
 - JS中的event 对象详解
		
JS中的event 对象详解 JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...
 - js中中括号,大括号使用详解
		
js中中括号,大括号使用详解 一.总结 一句话总结:{ } 是一个对象,[ ] 是一个数组 1.js大括号{}表示什么意思? 对象 { } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或 ...
 - amazeui中的js插件有哪些(详解功能)
		
amazeui中的js插件有哪些(详解功能) 一.总结 一句话总结: 二.amazeui中的js插件有哪些 1.UI 增强 警告框Alert 按钮交互Button 折叠面板Collapse 下拉组件D ...
 - [转帖]Windows注册表内容详解
		
Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...
 - pyhanlp 共性分析与短语提取内容详解
		
pyhanlp 共性分析与短语提取内容详解 简介 HanLP中的词语提取是基于互信息与信息熵.想要计算互信息与信息熵有限要做的是 文本分词进行共性分析.在作者的原文中,有几个问题,为了便于说明,这 ...
 
随机推荐
- FIN_WAIT_2状态解释
			
关于网络设备的FIN_WAIT_2状态解释出处:http://hi.baidu.com/netdemon1981/blog/item/584bfbb2aeb1d4acd9335ad9.html 在HT ...
 - windows cmd.exe 将程序 stdout 输出到文件中
			
问题背景:通过 cmd.exe 调用程序,会有一些输出信息,在 cmd 中不方便查阅,所以需要导入文件中. 例如 方法: 可以在其路径下看到
 - systemctl启动tomcat后,jps看不到进程
			
centos7 写了tomcat的启动脚本,脚本从网上copy的. [Unit]Description=tomcat-1After=syslog.target network.target remot ...
 - Sql Server数据库之多表查询
			
一.连接查询 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 目的:实现多表查询操作 语法:From join_table join_type join_table[ON(join_con ...
 - 【译】BERT表示的可解释性分析
			
目录 从词袋模型到BERT 分析BERT表示 不考虑上下文的方法 考虑语境的方法 结论 本文翻译自Are BERT Features InterBERTible? 从词袋模型到BERT  Mikol ...
 - windows集群简单介绍
			
windows集群简单介绍仔细看过以前网友发表的一些文章,总觉得对windows集群没有详细介绍,我也是借花献佛,引用了一些技术性文档.目前应用最为广泛的集群计算技术可以分为三大类:高可用性集群技术. ...
 - cf1047C-Enlarge GCD-(欧拉筛+map+gcd+唯一分解定理)
			
https://vjudge.net/problem/CodeForces-1047C 题意:有n个数,他们有个最大公约数设为maxxgcd,要删去一些数,使得剩下的数的gcd大于maxxgcd. 解 ...
 - 机器学习--Xgboost调参
			
Xgboost参数 'booster':'gbtree', 'objective': 'multi:softmax', 多分类的问题 'num_class':10, 类别数,与 multisoftma ...
 - mysql常用的统计类sql ,以及批量循环插入数据
			
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
 - idea激活方式
			
idea破解方法:转自https://note.youdao.com/ynoteshare1/index.html?id=d0f3fb42bfa1bb65a33115a1b6140f5f&ty ...