ExtJS4: почему, когда я использую конфигурацию directFn в моем магазине, мне нужно указать directCfg.method в качестве свойства directFn - PullRequest
5 голосов
/ 29 июля 2011

Недавно я использовал конфигурацию DirectFn, как это:

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

Но это не сработает, потому что ExtJS выдал исключение

Uncaught TypeError: Невозможно прочитать свойство 'method' из неопределенного

на линиях

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

в файле path/to/ext/src/data/proxy/Direct.js. После некоторых копаний я обнаружил, что fn относится к функции myDirectfn. Итак, я только что добавил строки:

myDirectfn.directCfg = {
    method: {}
};

в моем коде. После этого все стало работать нормально ( Вот скрипка ).

Итак, вопрос в том, что это за волшебная вещь directCfg? Зачем это нужно?

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Я думаю, что вы используете directFn неуместно. directFn должен использоваться вместе с Ext.direct.RemotingProvider. Проверьте официальный пример .

1 голос
/ 19 ноября 2012

Вы должны определить удаленный метод в Ext.app.REMOTING_API, прежде чем можно будет вызвать in.В примере , представленном репортером , включена страница 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, эта ошибка должна исчезнуть.

...