EXTJS4 - Как передать параметры и методы действий для TreeStore?

Я использую Extjs4 TreeStore, я хочу знать, как передавать параметры (например, режим = «список») и методы действия (POST или GET).

Заранее спасибо.

EXTJS 3.x, который я использовал, работает нормально:

loader: new Ext.tree.TreeLoader({
    dataUrl: 'content/permissions/server.php',
    baseParams: {
        mode: 'getPermissions'
    }
})

EXTJS 4.x я использовал так, но он не работает:

Ext.create('Ext.data.TreeStore', {
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url: 'server.php'
    },
    extraParams: {
        mode: 'getTree'
    },
    actionMethods: 'POST',
    root: {
        text: 'Tree',
        id: 'src',
        expanded: true
    }
});

Спасибо, Рияз.


person Riyaz Ahamed    schedule 21.06.2011    source источник


Ответы (3)


Вам следует тщательно проверить параметры конфигурации с текущим Ext Документация по API JS 4.

Что я вижу на первый взгляд:

  1. actionMethods является объектом, а не конфигурацией строкового значения. Он реализован как в прокси-серверах AJAX, так и в REST. Если вам нужно полнофункциональное редактируемое дерево, рассмотрите возможность использования прокси-сервера REST. Только если вы выходите за рамки CRUD, вам необходимо предоставить дополнительные actionMethods прокси-серверу REST.

  2. extraParams принадлежит прокси а не к конфигурации дерева.

Таким образом, конфигурация вашего магазина должна выглядеть так:

Ext.create('Ext.data.TreeStore', {
  autoLoad: true,
  proxy: {
    type: 'ajax',
    url: 'server.php',
    extraParams: {
      mode: 'getTree'
    },
  },
  root: {
      text: 'Tree',
      id: 'src',
      expanded: true
  }
 });

Вы проверили, был ли отправлен хотя бы Ajax-запрос на сервер? Вы можете легко проверить это с помощью FireBug.

person Netzpirat    schedule 21.06.2011
comment
Привет, он отлично работает с параметрами (extraParams), а как насчет методов POST и GET actionMethods (например: actionMethods: 'POST') - person Riyaz Ahamed; 21.06.2011

пример правильной настройки:

  actionMethods: {
                destroy:'DELETE',
                create: 'POST',
                update: 'POST',
                read: 'GET'
            },
person ivy    schedule 02.09.2011

Это правильный

Ext.create('Ext.data.TreeStore', {
    autoLoad: true,
    proxy: {
        type: 'ajax',
        url: 'server.php',
        extraParams: {
            mode: 'getTree'
        },
        actionMethods: 'POST'
    },
    root: {
        text: 'Tree',
        id: 'src',
        expanded: true
    }
});
person Riyaz Ahamed    schedule 21.06.2011
comment
@Riyaz Нет, вы ошибаетесь. actionMethod — это объект, а не строка. В вашем случае getMethod оценивается как undefined, что заставляет Ext.Ajax использовать метод запроса по умолчанию GET. Таким образом, результат точно соответствует моему ответу. Вы в основном взяли мой правильный ответ, изменили его неправильно и приняли. - person Netzpirat; 21.06.2011