注册氚云社区,学习低代码知识,与更多氚友互动交流
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 庞聪 于 2020-4-13 14:41 编辑
刚从标准版升级到使用专业版,需要在前端代码中尝试JS,最需要的是对氚云自身提供的默认事件进行确认。而观看了一下开发手册。公共接口中有这样一个方法:
弹出提示方法 $.IShowWarn(Info);
参数说明:Info: 需要在界面上显示的文本内容。
因此,想用来对默认事件进行确认。结果是跳跃一闪而过,根本就没有暂停功能。所以就尝试使用自定义暂停功能来做一个对比。结果如愿了。同时也测试了调用JS全局代码的可行性。
依次的顺序是:点击表单新增记录"+"或打开记录->加载事件OnLoad->按钮事件OnloadAction->(编辑)->数据填定界面->提交->(提交校验OnValidate->提交前事件BeforeSubmit->提交后事件AfterSubmit->出现提交校验的校验错误提示)->提交成功->运行业务规则或调用流程!括号里是设置有提交校验的先后过程,实际上包含了提交前事件和提交后事件,这种顺序的有无,对做代码开发来说,是非常重要的!感兴趣的同行,可以直接复制使用。
这里只是做个交流,互相学习。
有需要的可直接全部复制下列的代码,取代前端的代码即可。
以下代码不调用任何控件,不受控件的影响。只是对事件进行一个弹出提示。其实只用sleep或**都可以实现暂停功能。我只用了一个文本控件,并设置了提交校验。
前端代码完全如下(注释部分实际上就是系统默认的代码,因社区屏蔽显示成“***”了。):
/* 控件接口说明:
* 1. 读取控件: this.***,*号输入控件编码;
* 2. 读取控件的值: this.***.GetValue();
* 3. 设置控件的值: this.***.SetValue(???);
* 4. 绑定控件值变化事件: this.***.BindChange(key,function(){}),key是定义唯一的方法名;
* 5. 解除控件值变化事件: this.***.UnbindChange(key);
* 6. CheckboxList、**DownList、RadioButtonList: $.***.AddItem(value,text),$.***.ClearItems();
*/
/* 公共接口:
* 1. ajax:$.SmartForm.PostForm(actionName,data,callBack,errorBack,async),
* actionName:提交的ActionName;data:提交后台的数据;callback:回调函数;errorBack:错误回调函数;async:是否异步;
* 2. 打开表单:$.IShowForm(schemaCode, objectId, checkIsChange),
* schemaCode:表单编码;objectId;表单数据Id;checkIsChange:关闭时,是否感知变化;
* 3. 定位接口:$.ILocation();
*/
//以上为系统默认的注释内容,从下行开始才是需要运行的代码。"**"实际上是自定义的一个函数名称"**",手工改一下就行了,请看后面的截图。
// 表单插件代码
$.extend($.JForm,{
// 加载事件
OnLoad:function(){
//var myLocation = $.ILocation();
$.IShowWarn("加载事件: OnLoad");
**("加载事件: OnLoad");
},
// 按钮事件
OnLoadActions:function(actions){
$.IShowWarn("按钮事件: OnLoadActions");
**("按钮事件: OnLoadActions");
},
// 提交校验
OnValidate:function(actionControl){
$.IShowWarn("提交校验: OnValidate");
**("提交校验: OnValidate");
return true;
},
// 提交前事件
BeforeSubmit:function(action, postValue){
$.IShowWarn("提交前事件: BeforeSubmit");
**("提交前事件: BeforeSubmit");
},
// 提交后事件
AfterSubmit:function(action, responseValue){
$.IShowWarn("提交后事件: AfterSubmit");
**("提交后事件: AfterSubmit");
}
});
function sleep(obj,iMinSecond){
if (window.eventList==null) window.eventList=new Array();
var ind=-1;
for (var i=0;i<window.eventList.length;i++){
if (window.eventList==null) {
window.eventList=obj;
ind=i;
break;
}
}
if (ind==-1){
ind=window.eventList.length;
window.eventList[ind]=obj;
}
setTimeout("GoOn(" + ind + ")",1000);
}
function GoOn(ind){
var obj=window.eventList[ind];
window.eventList[ind]=null;
if (obj.NextStep) obj.NextStep();
else obj();
}
function **(state){
**(state);
sleep(this,1000);//调用暂停函数
this.NextStep=function(){
**("NextStep");
}
以上代码有屏蔽部分,请再参考下方的截图:
-----------------------------------------------
}
------------------------------------------------
|