0%

EMAP模板中的坑

前言

最近在学习EMAP框架(一个比较小众的快速开发框架),遇到了不少坑,同时,在交流群里,也总是看见不少同学在问这些问题。

这些问题其实不大,耐心调试也是可以解决了,但是会浪费好多时间,有不少同学会丧失学习的兴趣。

所以,我在这里汇总一下我自己学习过程中遇到的坑,希望对大家有帮助。

当然了,如果你自己遇到了什么坑,也可以告诉我,大家一起来完善 ^_^

关于增、删、改、查

默认的模板,是只有列表功能的,其中的增删改查都是不能用的。主要表现在以下几点:

  • 控制台报错
  • 显示保存成功,但是并没有增加数据
  • 编辑只能编辑第一条数据的内容
  • 详情只能查看第一条数据的内容
  • 编辑、详情中的每一项数据的名字是undefined
  • 无法删除数据
  • ……

关于undefined

这个是由于你的数据模型或者业务模型中中忘记添加中文名称的原因。

增——保存

xxxxBS.js中,将save方法中的TODO下方的注释去掉,同时,要将doAjax方法的第一个参数改成你自己的动作,一般为XXX_SAVE.do

删——删除

xxxxBS.js中,将del方法中的TODO下方的注释去掉,同时,要将doAjax方法的第一个参数改成你自己的动作,一般为XXX_DELETE.do
还要将下面一行的开头也改为XXX_DELETE

完成这一步,你应该可以看到删除成功的提示框了。

xxxx.js中,将actionDelete方法中的模型主键一行的注释去掉,并且将return中的结果换成你自己表的主键。格式保持原样!

改——编辑

xxxx.js中,将_initTable方法中,将编辑前面的rowData.WID中的WID改成你自己的主键,或者可以查询的的标志。

这句话的作用就是在点击编辑,通过这个值在数据库表中进行索引。

xxxx.js中,将actionEdit方法中,将下面这句话中的WID:id改成你自己的代码。看前面的代码,id就是你在编辑之前的那个rowData.WIDWID还是你的索引字段。

1
var data = WIS_EMAP_SERV.getData(bs.api.pageModel, 'STUINFO_QUERY', {WID:id});

查——详情

详情的修改应该是跟编辑差不多的。

xxxx.js中,将_initTable方法中,将详情前面的rowData.WID中的WID改成你自己的主键,或者可以查询的的标志。

这句话的作用就是在点击详情,通过这个值在数据库表中进行索引。

xxxx.js中,将actionDetail方法中,将下面这句话中的WID:id改成你自己的代码。看前面的代码,id就是你在详情之前的那个rowData.WIDWID还是你的索引字段。

1
var data = WIS_EMAP_SERV.getData(bs.api.pageModel, 'STUINFO_QUERY', {WID:id});

快速搜索

有些同学会发现,自己跟着视频里操作,但是自己添加字典之后,该字段的显示方式还是下拉,并不是视频中的按钮组(视频中的性别的显示类型就叫这个名字)

其实可以在数据模型或者业务模型中,修改相关字段的查询显示属性中修改你的显示类型。

当然了,你也可以根据属性配置中的各种显示属性自己设置其他地方的显示类型。

附件上传

请参考我之前的文章:EMAP上传附件

动作流保存失败

在视频中,老师说,动作流需要将表单的参数封装成一个json对象,key是动作流中动作的编号,value是你的表单数据。

错误信息如下:

1
The param KEY hasn't setted in update TABLE.key.modify.

其中,KEYTABLE分别为表的主键和表名。

在这里,你应该将你的表单数据先转换成json字符串,然后才能作为value,封装进参数。具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
save: function(){
if( $("#JBXX").emapValidate('validate')
&& $("#LXXX").emapValidate('validate') ){
var formDataJBXX = JSON.stringify($("#JBXX").emapForm("getValue"));
$("#JBXX").emapForm("saveUpload");
var formDataLXXX = JSON.stringify($("#LXXX").emapForm("getValue"));
var formData = {
saveBasic : formDataJBXX,
saveConn : formDataLXXX
};
bs.save(formData).done(function(data){
alert("保存成功");
$('#emapdatatable').emapdatatable('reload');
$.bhPaperPileDialog.hide();//隐藏纸质弹窗
});
}
}

第四行第六行中的JSON.stringify函数是加上的,而且老师没说的。

EmapForm多图多文件上限

在Emap Form初始化中添加参数:

1
2
3
4
5
6
7
8
defaultOptions: {
uploadfile: { //多文件
limit: 9
},
"uploadmuiltimage": { //多图片
"limit": 9
}
}

缺陷:当表单中有多个多文件/多图片时,不能单独设置。

调整纸质弹窗的页脚位置

在使用纸质弹窗的时候,经常会出现页脚悬浮的情况,图下图:

调整方式是,在ready回掉函数中,添加以下代码:

1
2
$.bhPaperPileDialog.resetPageFooter();//改变页面的页脚位置
$.bhPaperPileDialog.resetDialogFooter();//改变弹框的页脚位置

具体方式如下:

后记

目前我发现的坑,暂时有这些,这篇文章我会不定期的更新,欢迎大家来讨论。