一、YOUI组件库通用约定
1、遵循jQuery官方UI组件库的模式,依赖jquery.js(1.3.2),ui.core.js(1.7.2)
2、约定使用initHtml参数决定是否初始化静态html
3、约定使用_defaulHtmls方法执行静态html的初始化
4、约定使用_initAction方法初始化动作相关的操作
5、约定使用div元素作为组件的载体
二、Field组件的通用约定
1、所有的field组件都需要extend 自 $.youi.field,一般情况下使用如下代码组件化
$.widget("youi.fieldText",$.extend({},$.youi.field,{......});
2、field结构约定
field相关的抽象对象
$.youi.field 所有field组件的需要extend的对象
$.youi.fieldSource 带数据的类型的field组件需要extend的对象,通过parents数组参数实现父子联动
$.youi.fieldPop 下拉类型的field组件需要extend的对象,已经extend 自 $.youi.fieldSource
3、field组件公共访问方法
getValue 获得field组件值,返回单值或者值数组
setValue(value) 设置field组件值,value可以是单值或者值数组
getText 获得显示文本
focus 聚焦field组件
clear 清空
reset 重置(根据defaultValue决定调用 setValue或者clear)
validate 校验
4、通过样式和field div元素的样式来展示校验信息,validate-error样式表示校验不通过,validate-success样式表示校验通过,通过title属性存储校验的输出信息,fieldText组件中使用validating样式表示ajax校验中。
fieldSelect示例:
/**
* field组件
* Copyright (c) 2009 zhouyi
* licenses
* doc
*/
(function($) {
var _log = $.youi.log;
/**
* fieldSelect组件
*
*/
$.widget("youi.fieldSelect",$.extend({},
$.youi.field,//field
$.youi.fieldPop,{//fieldPop继承了fieldSource
/**
* fieldSelect的个性初始化
* 1、调用约定的fieldSource组件的初始化方法_initSource
*/
_initField:function(){
this._initSource();
},
/**
* 回调函数,返回record解析成的html
*/
_parseRecord:function(index,record,options){
var htmls = [],
codeValue = record.code,
showValue = record.show,
itemClasses = ['option-item'];
var selectedValue = options.selectedValue;
if(selectedValue!=null){//已选值处理
var values= [];
if($.isArray(selectedValue)){
values = selectedValue;
}else{
values = [selectedValue];
}
for(var i=0;i<values.length;i++){
if(codeValue==values[i]){
itemClasses.push('selected');
options.selectedTexts.push(showValue);//选值对应的文本加入约定的参数selectedTexts中
break;
}
}
}
htmls.push('<div value="'+codeValue+'" class="'+itemClasses.join(' ')+'">'+showValue+'</div>');
return htmls.join('');
},
/**
* 空记录的html
*/
_nullItemHtml:function(){
return '<div class="option-item"></div>';
},
/**
* 获得存放数据的容器的id
*/
_getDatasContextId:function(){
return this._getPanelId();//fieldSelect组件的数据panel和popPanel一致
},
/**
* 初始化panel的动作
*/
_initPanelAction:function(){
this._getPopPanel()
.mousedown(function(event){event.stopPropagation();})//阻止冒泡
.bind('click',function(event){
var eventClass = $.youi.eventUtil.getEventClass(event);//option-item;
if(eventClass=='option-item'){
var fieldId = this.getAttribute('fieldId');
$.youi.fieldUtil.execMethod($('#'+fieldId),'setValue',event.target.getAttribute('value'));
$.youi.fieldUtil.execMethod($('#'+fieldId),'_closePanel');
}
}
);
},
/**
* 设置值
*/
setValue:function(value){
this.element.find('input.value').val(value);
//设置文本
if(!this._isLoaded()){//如果没有加载数据
this._datasLoader();//加载数据
}else{//已经加载了数据
var text = this._getPopPanel().find('.option-item[value='+value+']').text();
this.setText(text);
this._resetChildren();
}
},
/**
* 获得值
*/
getValue:function(){
return this.element.find('input.value').val();
},
/**
* 设置显示值
*/
setText:function(text){
this.element.find('input.textInput').val(text);
},
/**
* 获得显示值
*/
getText:function(){
return this.element.find('input.textInput').val();
},
clear:function(){
this.element.find('input.textInput,input.value').val("");
},
focus:function(){
//TODO
}
}));
$.extend($.youi.fieldSelect,{
defaults:$.extend({},$.youi.fieldPopDefaults,{
})
});
})(jQuery);
- 大小: 45.1 KB
- ui.war (644.7 KB)
- 描述: 演示field的组件的demo
- 下载次数: 58
分享到:
相关推荐
前端开源库-filed-mimefix归档的mimefix,简化的文件库。
修改vant的field组件,使之拥有自动完成功能的,即autocompelete
filed_assignment 由提起的赋值api
how to make a complex filed group jasper
iphone fieldtest 激活方法
使用antd的Form组件setFieldsValue可能会出现You cannot set a form field before rendering a field associated with the value.警告,字面意义去看是说在 render之前设置了表单值的问题。 解决 在使用...
华为项目管理新增笔试及面试,整理了近期的笔试考试题目经相关答案分享给大家。
亿邮邮件服务器双机冷备mysql_filed复制.docx
python abaqus 保存每一帧的场输出为一个文件,只输出的mises值,如果需要保存其他值改动输出就可以了
Extract all these filed to a directory (CppUnitLite) Move StackMain.cpp, StackTest.cpp and Stack.h to some other directory Create a workspace Create a project for a static library called CppUnitLite, ...
这是一个测试项目,旨在演示响应式和Angular功能,例如响应式表单,路由,服务,可恢复组件,Ngrx存储等。 开始吧 克隆仓库 git clone https://github.com/utkarsh1agarwal/Filed-demo.git cd angular-test 安装npm...
示例组件 DG 演示组件的示例 Angular 模板。 使用模板来构建您的控制器、指令、html 和 css。 注意:不要更改模块、控制器或 html 模板名称。 使用 .demo- 作为 css 前缀
谭智源-基于Matlab的超声场可视化研究及GUI仿真模拟
打着灯笼找不到的好书噢,要大家两分,不过分吧
filed_payments-main
filed_project
三菱Q系列PLC网络通讯视频教程 Q系列PLC MELSECNET H网络通信视频 (1G) Q系列以太网QJ71E71-100通讯控制视频(3G 9集) Q系列CC-LINK通讯视频教程...Q系列CCLINK IE Filed通讯视频教程(1.5G) Q系列PLC综合应用案例
三菱Q系列PLC网络通讯视频教程 Q系列PLC MELSECNET H网络通信视频 (1G) Q系列以太网QJ71E71-100通讯控制视频(3G 9集) Q系列CC-LINK通讯视频教程...Q系列CCLINK IE Filed通讯视频教程(1.5G) Q系列PLC综合应用案例
整理的关于SharePoint 字段类型的内置名称的列表。