2011-07-29 6 views
5

Recientemente yo estaba usando config directFn así:ExtJS4: ¿Por qué cuando uso directFn config en mi tienda necesito especificar directCfg.method como propiedad del directFn

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

Pero no funcionaría porque ExtJS lanzó excepción

Uncaught TypeError: Cannot read property 'method' of undefined

en las líneas

method = fn.directCfg.method; 
if (method.ordered) { 

en el archivo path/to/ext/src/data/proxy/Direct.js. Después de algunas excavaciones descubrí que fn se refiere a la función myDirectfn. Así que acabo de agregar líneas:

myDirectfn.directCfg = { 
    method: {} 
}; 

en mi código. Después de eso, todo comenzó a funcionar correctamente (Here is fiddle).

Entonces la pregunta es: ¿Qué clase de cosa mágica es esta directCfg? ¿Por qué es necesario?

Respuesta

1

Debe definir el método remoto en Ext.app.REMOTING_API before in se puede llamar. En el example given by reporter, la página de la API se incluye y define la función "TestAction" llamado por el proxy:

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}]}}; 

Una vez que la función directa se define en el Ext.app.REMOTING_API, ese error debería desaparecer.

Cuestiones relacionadas