2011-07-29 4 views
5

Ostatnio używałem directFn config tak:ExtJS4: Dlaczego, gdy używam directFn config w moim sklepie trzeba określić directCfg.method jako własność directFn za

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

Ale to nie będzie działać, ponieważ ExtJS wyrzucił wyjątek

Uncaught TypeError: Cannot read property 'method' of undefined

na liniach

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

w pliku path/to/ext/src/data/proxy/Direct.js. Po pewnym wykopaniu dowiedziałem się, że fn odnosi się do funkcji myDirectfn. Właśnie dodałem linie:

myDirectfn.directCfg = { 
    method: {} 
}; 

w moim kodzie. Potem wszystko zaczęło działać poprawnie (Here is fiddle).

Pytanie brzmi: jaka magiczna jest ta directCfg? Dlaczego jest potrzebny?

Odpowiedz

1

Musisz zdefiniować metodę zdalną w Ext.app.REMOTING_API przed wywołaniem. W example given by reporter, strona API jest zawarta i określa funkcję „TestAction” nazwany przez pełnomocnika:

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

Gdy funkcja bezpośrednia jest zdefiniowana w Ext.app.REMOTING_API, że błąd powinien odejść.