简体中文
md.render.before
约 1239 字大约 4 分钟
2025-09-22
从对象渲染之前触发。
从对象渲染之前
- 这个时机做一些从对象UI初始化逻辑
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| objApiName | 当前从对象api_name | String |
| mdBottomComs | 展示在md底部的自定义组件,默认插入paas层组件,插件中可以基于该属性增删改 | Array |
返回结果
| 参数 | 说明 | 类型 |
|---|---|---|
| filterShowObjectDataList | 同步方法,过滤指定业务类型要顺序展示的数据列表 | Function Array |
| handleOutFields | 同步方法,处理从对象外露字段 | Function Array |
| handleSingleButtons | 同步方法,处理从对象单行按钮,单行按钮仅卡片模式和平铺模式支持 | Function Array |
| handleNormalButtons | 同步方法,处理从对象通用按钮,通用按钮是用于添加从对象的按钮 | Function Array |
| handleBatchButtons | 同步方法,处理从对象批量按钮 | Function Array |
| handleBarButtons | 同步方法,处理从对象操作条外露按钮 | Function Array |
代码示例
过滤要展示的从对象数据,隐藏不希望展示的从对象数据。
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
//和之前的结果合并
let filterShowObjectDataList = (pluginExecResult.preData&&pluginExecResult.preData.filterShowObjectDataList) || [];
filterShowObjectDataList.push(({dataList,recordType})=>{
//recordType:指定的业务类型
//dataList: 当前业务类型的默认展示数据,这里只适合过滤或调整顺序,其他操作无意义
return dataList && dataList.filter(it=>{
if (it.name && it.name.includes("不显示")){//示例,不希望显示的数据过滤掉
return false;
}
return true
})
})
}
}处理从对象外露字段
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
//和之前的结果合并
let handleOutFields = (pluginExecResult.preData&&pluginExecResult.preData.handleOutFields) || [];
handleOutFields.push((opt)=>{
//opt.recordType: 指定的业务类型
//opt.fields: 外露的字段描述列表, 直接修改
opt.fields.splice(0,1);//删除第一个字段
return opt;
})
return {handleOutFields}
}
}处理从对象单行按钮
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
//和之前的结果合并
let handleSingleButtons = (pluginExecResult.preData&&pluginExecResult.preData.handleSingleButtons) || [];
handleSingleButtons.push((opt)=>{
//opt.recordType: 指定的业务类型
//opt.buttons: 外露的单行按钮列表, 直接修改。 目前仅预制删除、复制按钮,示例:[{ label: '删除', action:"Delete", api_name: 'Delete_button_default' }, { label: '复制', action:"Clone", api_name: 'Clone_button_default' }]
opt.buttons.splice(0,1);//删除第一个按钮
//插入自定义按钮(自定义点击事件): [action: "my_button",api_name:"my_button", icon:'fxui_all的图标',label: "测试",onClick:()=>{}]
opt.buttons.push({
action:"my_button",
api_name:"my_button",
icon:"delete",//1. 预制fxui_all图标,2. 自定义网络图片,示例:icon:"https://a9.fspage.com/FSR/weex/avatar/object_form/images/form/business_search_btn.png"
label:"测试",//宽度有限制,文字不要过多,否则会被截断,建议使用icon,有icon优先展示icon
onClick:function({dataIndex}){
//dataIndex: 当前行的数据的dataIndex
console.log("自定义单行按钮 my_button 被点击", dataIndex)
}
})
return opt;
})
return {handleSingleButtons}
}
}处理从对象通用按钮
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
//和之前的结果合并
let handleNormalButtons = (pluginExecResult.preData&&pluginExecResult.preData.handleNormalButtons) || [];
handleNormalButtons.push((opt)=>{
//opt.recordType: 指定的业务类型
//opt.buttons: 通用按钮列表, 直接修改。示例:
//单行添加:[{action_type: "default", api_name: "Single_Add_button_default", action: "Single_Add", label: "添加一行"}]
//从查找关联批量添加:[{lookup_field_name: "field_Qs7gH__c", label: "从查找关联添加",action: "Batch_Lookup_Add",notFilterReadOnly:true}]
//button.notFilterReadOnly=true,允许从只读的lookup字段批量添加
//自定义按钮(自定义点击事件): [action: "my_button",api_name:"my_button", label: "插件追加的按钮",onClick:()=>{}]
opt.buttons.splice(0,1);//删除第一个按钮
opt.buttons.push({//新增一个按钮
action:"customxxx",
label:"自定义按钮xxx",
onClick(){
console.log("自定义通用按钮 customxxx 被点击")
}
})
return opt;
})
return {handleNormalButtons}
}
}处理从对象批量按钮
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
//和之前的结果合并
let handleBatchButtons = (pluginExecResult.preData&&pluginExecResult.preData.handleBatchButtons) || [];
handleBatchButtons.push((opt)=>{
//opt.recordType: 指定的业务类型
//opt.buttons: 批量按钮列表, 直接修改。 目前仅预制批量删除、批量复制按钮,示例:[{ label: '删除', action:"Delete", api_name: 'Delete_button_default' }, { label: '复制', action:"Clone", api_name: 'Clone_button_default' }]
opt.buttons.splice(0,1);//删除第一个按钮
//插入自定义按钮(自定义点击事件): [action: "my_button",api_name:"my_button", icon:'fxui_all的图标',label: "测试",onClick:()=>{}]
opt.buttons.push({
action:"my_button",
api_name:"my_button",
label:"测试",
onClick:function({checkedDataIndexs}){
//checkedDataIndexs: 当前选中的行的数据的dataIndex集合:{"2":1, "3":1},key为dataIndex, value为1(代表被选中)
console.log("自定义批量按钮 my_button 被点击", checkedDataIndexs)
}
})
return opt;
})
return {handleSingleButtons}
}
}处理从对象操作条外露按钮
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
//和之前的结果合并
let handleBarButtons = (pluginExecResult.preData&&pluginExecResult.preData.handleBarButtons) || [];
handleBarButtons.push((opt)=>{
//opt.recordType: 指定的业务类型
//opt.buttons: 操作条外露列表, 直接修改。预制通用添加按钮和操作按钮
opt.buttons.splice(0,1);//删除第一个按钮
//插入自定义按钮(自定义点击事件): [action: "my_button",api_name:"my_button", icon:'fxui_all的图标',label: "测试",onClick:()=>{}]
opt.buttons.push({
action:"my_button",
api_name:"my_button",
label:"测试",
icon:"delete",//预制fxui_all图标
onClick:function(){
console.log("自定义操作条 my_button 被点击")
}
})
return opt;
})
return {handleSingleButtons}
}
}定制mdchild组件
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
return {
mdChildRenderTypes:{
"default__c": "testmdchild",//md.wxml中注册组件用唯一标识
"all": "testmdchild2",//表示所有业务类型都用该组件,优先级较指定业务类型的低
}
}
}
}调整md组件底部的自定义组件
{
event: "md.render.before",
functional: function (pluginExecResult, options) {
let {mdBottomComs} = options;
mdBottomComs = pluginExecResult.preData.mdBottomComs || mdBottomComs || [];
mdBottomComs = mdBottomComs.filter(it=>{
return it.name != "paas_mdcount";//隐藏统计字段看板
})
return {mdBottomComs}
}
}注意
- 不适合在这个事件中调用
dataUpdater
