一、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
分享到:
相关推荐
Vant是Vue.js框架下的一个轻量级UI库,提供了丰富的组件化解决方案,帮助开发者快速构建移动应用。在Vant的组件体系中,`Field`组件主要用于表单输入,而`Autocomplete`则是用于实现自动完成功能的组件。在本案例中...
在IT行业中,前端开发是构建Web应用程序不可或缺的一部分。开源库为开发者提供了丰富的工具和资源,大大简化了开发过程。"filed-mimefix"是一个专为前端开发设计的开源库,其主要目标是处理和修正文件的MIME类型问题...
Java Swing库中的JTextField组件是用于创建用户输入文本的简单单行字段,它是GUI应用程序中常见的一种交互元素。本文将详细介绍JTextField的使用方法、功能特性以及如何在实际编程中应用。 1. **JTextField简介** ...
- **“HCS-filed-PM笔试考题”**:这个标题意味着这份资料包含了华为认证服务解决方案(HCS)领域的项目管理(PM)相关的笔试题目。这意味着考生需要掌握的服务解决方案方面的项目管理知识。 #### 描述解析: - ...
API是一组预定义的函数、类、对象和常量,它们为开发者提供了构建软件或应用程序的工具。在`field_assignment`的场景下,这个API可能包含了一系列用于设置和处理对象字段的方法。 1. **字段(Field)**:在面向对象...
【标题】"sound_filed-master.zip" 是一个与超声波声场相关的项目,由谭智源开发,主要使用MATLAB进行实现。这个压缩包包含了用于超声场可视化研究和图形用户界面(GUI)仿真的代码和资源。 【描述】"谭智源-基于...
使用antd的Form组件setFieldsValue可能会出现You cannot set a form field before rendering a field associated with the value.警告,字面意义去看是说在 render之前设置了表单值的问题。 解决 在使用...
- CI(小区ID):每个小区都有一个唯一的CI,用于识别不同的小区。这对于网络规划和优化至关重要。 - N(网络代码)与#(国家代码):分别表示移动网络代码和移动国家代码,用于识别不同的运营商和国家。 2. **...
总结来说,"filed-audio-server"是一个用Python构建的音频服务器,它利用Python的Web框架和音频处理库来提供音频服务。开发这样的服务器需要理解HTTP协议、音频处理技术、数据库操作以及网络安全。通过"filed-audio-...
此外,Simulink环境可以用于构建动态系统模型,包括超声波发射器和接收器的工作模型。 三、超声场的数值模拟 在Matlab中,可以通过数值方法(如有限差分法或有限元法)来模拟超声场的传播。这涉及到求解波动方程,...
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, ...
通过构建像素间的相互依赖关系,MRF 能够有效地进行图像分割、恢复以及识别等任务。 #### 马尔科夫随机场基本原理 马尔科夫随机场的基本思想是基于局部性质来推断全局特性。每个像素不仅与其邻域内的其他像素有...
这是一个测试项目,旨在演示响应式和Angular功能,例如响应式表单,路由,服务,可恢复组件,Ngrx存储等。 开始吧 克隆仓库 git clone https://github.com/utkarsh1agarwal/Filed-demo.git cd angular-test 安装npm...
在Java编程语言中,文件操作是一项基础且至关重要的任务,特别是在构建数据访问对象(DAO)层时。DAO模式被广泛应用于解耦业务逻辑与数据存储,使得代码更加可维护和可扩展。`FileDao`就是一个典型的例子,它专门...
基于Matlab的超声场可视化研究及GUI仿真模拟sound_filed-master.zip
示例组件 DG 演示组件的示例 Angular 模板。 使用模板来构建您的控制器、指令、html 和 css。 注意:不要更改模块、控制器或 html 模板名称。 使用 .demo- 作为 css 前缀
### 如何设计复杂的字段组报表(Complex Field Group Jasper) #### 概述 本文档将详细介绍如何设计一个复杂的字段组报表(Complex Field Group Jasper),并涵盖了创建样式、背景颜色设置、条件性显示线条与背景色...
errors对象是一个组件内置的数据模型,用于存储和处理错误信息。errors对象提供了多种方法来获取和处理错误信息,例如: * errors.first('field') - 获取关于当前field的第一个错误信息 * errors.collect('field') ...