| 
本帖最后由 庞聪 于 2020-4-13 14:41 编辑
x
注册氚云社区,学习低代码知识,与更多氚友互动交流您需要 登录 才可以下载或查看,没有帐号?立即注册  
 刚从标准版升级到使用专业版,需要在前端代码中尝试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");
 }
 以上代码有屏蔽部分,请再参考下方的截图:
 -----------------------------------------------
 
 }
   ------------------------------------------------
 
   
 
 
 |