0

我已经实现了 Ext.Direct 以将数据返回到商店,但是在 javascript 中不提供 directFn 方法。

api.php 返回 var Ext = Ext || {}; Ext.REMOTING_API = {"url":"php/api/router.php","type":"remoting","actions":{"RaStatuses":[{"name":"get_ra_statuses","len":1}]}};

router.php 返回 {"type":"rpc","tid":1,"action":"RaStatuses","method":"get_ra_statuses","result":[{"ra_no":"2"},{"ra_no":"4"},{"ra_no":"6"},{"ra_no":"8"},{"ra_no":"10"}]}

...并成功填充此商店

Ext.define('CSM.store.ra.Statuses', {
  extend: 'Ext.data.Store',
  model: 'CSM.model.ra.Status',
  proxy: {
    type: 'direct',
    directFn: "RaStatuses.get_ra_statuses"
  },
  autoLoad: true
});

但是,当我在 javascript 函数中使用这一行时 a = RaStatuses.get_ra_statuses();

...我明白了 'ReferenceError: RaStatuses is not defined'

我误解了吗?Ext.Direct 应该让这个对象在 js 中可用还是这是一厢情愿?

4

1 回答 1

0

这现在有效(ExtJS 6.0.2)。我修改了 api.php 以返回...

Ext.namespace('RPC');   
var Ext = Ext || {};
RPC.REMOTING_API = {
    "url": "php/api/router.php",
    "type": "remoting",
    "namespace": "RPC",
    "descriptor": "RPC.REMOTING_API",
    "actions": {
        "RaStatuses": [{
            "name": "get_ra_statuses",
            "len": 0
        }]
    }
};
Ext.direct.Manager.addProvider(RPC.REMOTING_API);

此调用现在返回数据

RPC.RaStatuses.get_ra_statuses();
于 2022-02-08T11:40:07.140 回答