Ext.Direct配置后调用directFn方法提示RaStatuses未定义问题咨询
Ext.Direct Action未定义问题解答
核心原因
你对Ext.Direct的自动全局暴露机制的理解存在偏差,Ext.Direct 默认不会 将Ext.REMOTING_API中声明的Action自动挂载到全局JS环境,这就是你直接调用RaStatuses.get_ra_statuses()抛出未定义错误的核心原因。
Store可以正常使用的逻辑是:Ext.data.Store解析directFn配置时,会直接从Ext.REMOTING_API的actions配置项中匹配对应的方法定义发起请求,不依赖全局暴露的Action对象。
解决方案
1. 注册Provider实现全局暴露
在调用Ext.Direct方法前,先执行Provider注册逻辑,执行完成后所有声明的Action会自动挂载到全局作用域:
// 必须在所有Ext.Direct方法调用前执行 Ext.direct.Manager.addProvider(Ext.REMOTING_API); // 注册完成后即可正常调用 RaStatuses.get_ra_statuses(/* 入参 */, function(result, response) { // 异步回调中获取返回结果 console.log(result); });
2. 不暴露全局的替代调用方式
如果不想将Action挂载到全局,可以直接通过Ext.Direct管理器调用指定方法:
Ext.direct.Manager.getMethod('RaStatuses', 'get_ra_statuses')(/* 入参 */, function(result) { console.log(result); });
注意事项
- Ext.Direct所有方法都是异步执行的,直接通过
a = RaStatuses.get_ra_statuses()的方式无法拿到后端返回的业务数据,该调用返回值为请求实例对象,必须通过回调函数接收结果。 - 确保Provider注册逻辑的执行时机早于所有Ext.Direct方法调用,避免出现偶发的未定义错误。
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

