Как использовать JSON без файла JSON? - PullRequest
0 голосов
/ 23 апреля 2011

Мне нужно динамически использовать JSON с data.TreeStore.С этим компонентом есть прокси "config", ему нужен путь к файлу JSON.Моя проблема в том, что я не могу записать файл Json в свое приложение.Я хотел бы знать, если я могу сгенерировать JSON динамически и передать его в конфигурацию URL-адреса в прокси-сервер?

Например:

Var trStore = Ext.create('Ext.Data.TreeStore',{

... // config
proxy {

type : 'ajax',
url : { id : 'id0', task :'task0', value : 'val0', ..... }

}
});

Мой URL-адрес не является URL-адрес файла, но генерируется JSON с моимсобственный метод!

Как собрать JSON для использования с TreeStore и без make-файла!?

Надеюсь, вы понимаете мою проблему:)

Спасибо большое, чтобы помочь!

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Помните, что "файл json" - это на самом деле просто текстовая строка, поэтому вы можете сгенерировать ее с помощью PHP или предпочитаемого вами серверного программного обеспечения.

Для URL-адреса в прокси-сервере просто введите URL-адрес, который вы используетезапустить эту функцию.Например, в моем веб-приложении у меня есть http://example.org/controller/getTree?output=json

. На моем controller запускается функция getTree(), и функция знает, что нужно вернуть json.

0 голосов
/ 24 апреля 2011

Ваш пример выглядит так, как будто вы хотите передать статические «встроенные данные» в TreeStore.

Насколько я вижу, это невозможно с голым TreeStore, поскольку у него нет опции конфигурации data , как у "обычного" хранилища. Тем не менее, это возможно с Treepanel.

Вы можете передать свои встроенные данные в TreeStore, используя опцию конфигурации root Treepanel (не TreeStore). Он работает очень похоже на конфигурационную опцию data «обычного» хранилища:

Ext.create('Ext.tree.Panel', {
  root: { id : 'id0', task :'task0', value : 'val0', children: [...], ... }
  // ...
});

Есть две оговорки, связанные с этим:

  • Документы бета3 говорят, что root - логическое значение, это неправильно.
  • Из-за ошибки в бета3 вы не можете использовать это вместе с rootVisible: false .
...