简体中文
npcRun
约 432 字大约 1 分钟
2025-09-22
以最新的上下文执行 hook 逻辑,与底层默认触发各类 hook 类似,适合在插件内实现跳出插件生命周期的逻辑,例如按钮点击事件触发。
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| hook | 必填,hook函数或者hook事件名称 | Function|String |
| params | 自定义hook事件参数,发送给事件接收方使用 | Object |
| opt | 可选配置参数 | Number |
返回结果
无
代码示例
[{
event: "form.render.before",
functional: function (pluginExecResult, options) {
let {bizApi}=options;
//找到apiName为custom_btn_test1__c的按钮
let btn1 = options.buttons.find(it=>it.api_name==="custom_btn_test1__c");
if(btn1){
//案例1:在插件hook中的定义的按钮点击函数中调用,直接实现hook函数,进行数据及界面状态更新逻辑
btn1.onClick = function(){
bizApi.npcRun(p=>{
let newDataIndexs = p.dataUpdater.add([{...}]);//使用重新得到的参数中的dataUpdater新增从数据
return p.bizApi.triggerCalAndUIEvent({//使用重新得到的参数中的bizApi触发计算
objApiName: 'SaleOrderProductObj',//当前发起计算的对象,必须
newDataIndexs, //新加的从数据dataIndex,如果你发起计算是因为添加了从对象数据,需要传
})
})
}
}
//找到apiName为custom_btn_test2__c的按钮
let btn2 = options.buttons.find(it=>it.api_name==="custom_btn_test2__c");
if(btn2){
//案例2:在插件hook中的定义的按钮点击函数中调用,抛出自定义的插件hook事件,可以通过通用插件事件注册的方式接收并处理
btn2.onClick = function(){
bizApi.npcRun("plugin1.btn.onClick", {test:"自定义事件参数"})
.then(rst=>{
//得到事件处理结果
})
}
}
}
},
{
event: "plugin1.btn.onClick",
functional: function (pluginExecResult, options) {
//处理自定义插件事件
let {test} = options;
console.log(test);//自定义事件参数
}
}]注意
- 以新的插件上下文执行hook,不要在某个插件hook生命周期内调用。
