ExtJS4:为什么当我在商店中使用directFn配置时,我需要指定directCfg.method作为directFn的属性

时间:2011-07-29 13:03:34

标签: javascript extjs extjs4

最近我使用的是directFn配置:

var store = new Ext.data.Store({
    proxy: {
        type: 'direct',
        directFn: myDirectfn,
...

但它不起作用,因为ExtJS引发了异常

  

未捕获的TypeError:无法读取未定义的属性'method'

method = fn.directCfg.method;
if (method.ordered) {
文件path/to/ext/src/data/proxy/Direct.js中的

。经过一番挖掘后,我发现fn指的是myDirectfn函数。所以我刚添加了一行:

myDirectfn.directCfg = {
    method: {}
};

在我的代码中。之后,所有都开始正常工作(Here is fiddle)。

所以问题是:directCfg是什么样的神奇之物?为什么需要?

2 个答案:

答案 0 :(得分:2)

我认为你不恰当地使用directFndirectFn必须与Ext.direct.RemotingProvider配合使用。查看official example

答案 1 :(得分:1)

您必须在调用之前在Ext.app.REMOTING_API中定义远程方法。在example given by reporter中,包含了api页面并定义了代理调用的“TestAction”函数:

Ext.ns("Ext.app"); 
Ext.app.REMOTING_API = {"url":"php\/router.php","type":"remoting","actions":{"TestAction":[{"name":"doEcho","len":1},{"name":"multiply","len":1},{"name":"getTree","len":1},{"name":"getGrid","len":1},{"name":"showDetails","params":["firstName","lastName","age"]}],"Profile":[{"name":"getBasicInfo","len":2},{"name":"getPhoneInfo","len":1},{"name":"getLocationInfo","len":1},{"name":"updateBasicInfo","len":0,"formHandler":true}]}};

一旦在Ext.app.REMOTING_API中定义了直接函数,该错误就会消失。