EXTjs - Eval multi json элементы - PullRequest
       21

EXTjs - Eval multi json элементы

0 голосов
/ 13 октября 2010

Я хочу взять некоторые данные с сервера и проверить их.
если я получу 1 элемент в json, он будет работать нормально, но если я получу больше, я получу ошибку
это операция (с использованием jquery для ajax):

  ,getColsFromServer : function(){
    return [new Ext.grid.RowNumberer(),
          Ext.util.JSON.decode('{"id":"id","dataIndex":"id","header":"ID","width":"20","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}},{"dataIndex":"email","header":"Title","width":"120","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}}')//,{"id":"pixels","dataIndex":"pixels","header":"pixels","width":"120","sortable":"true","editor":{"xtype":"textarea","allowBlank":"false"}})
           ];
    }

если вы посмотрите, у меня есть 2 столбца идентификатор + адрес электронной почты. использование 2-х столбцов возвращает ошибку: this.config [col] не определено
[Break on this error] вернуть this.config [col] .width;

usind один столбец - отлично работает.

это контекст: я пытаюсь построить свой собственный объект сетки, так что это использование:

var grid = new Ext.grid.GridPanel({
              loadMask: true,
            store: store,
            margins: '0 5 5 5',
            autoExpandColumn: 'id',
            plugins: [editor],

            tbar: minisites.getTopBar(editor,store,grid),

            bbar: minisites.getPagingBar(store , 1),

            columns: minisites.getCols()// THIS FUNCTION WILL RETURN THE OBJ FROM THE SERVER USING SYNCED AJAX REQUEST
        });

Есть идеи?

Ответы [ 2 ]

1 голос
/ 13 октября 2010

Если вы хотите оценить более одного объекта, вы должны поместить их в массив.Например:

Ext.util.JSON.decode('[{"id":"id","dataIndex":"id","header":"ID","width":"20","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}},{"dataIndex":"email","header":"Title","width":"120","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}}]')

edit:

Если вы хотите вернуть хеш для доступа к каждому элементу по имени («id» и «email», если я правильно понял), выдолжен сделать это:

Ext.util.JSON.decode('{ "id": {"id":"id","dataIndex":"id","header":"ID","width":"20","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}}, "email": {"dataIndex":"email","header":"Title","width":"120","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}}}')

edit # 2:

В этом контексте, getColsFromServer должен возвращать массив столбцов, подобный этому:

getColsFromServer : function(){
    return Ext.util.JSON.decode('[{"id":"id","dataIndex":"id","header":"ID","width":"20","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}},{"dataIndex":"email","header":"Title","width":"120","sortable":"true","editor":{"xtype":"textfield","allowBlank":"false"}}]');
    }
0 голосов
/ 14 октября 2010

Я подозреваю, что определение вашего столбца неверно. Если вы измените свой код для этого, что будет показано в консоли?

var col = minisites.getCols();// THIS FUNCTION WILL RETURN THE OBJ FROM THE SERVER USING SYNCED AJAX REQUEST
console.dir(col);
var grid = new Ext.grid.GridPanel({
              loadMask: true,
            store: store,
            margins: '0 5 5 5',
            autoExpandColumn: 'id',
            plugins: [editor],

            tbar: minisites.getTopBar(editor,store,grid),

            bbar: minisites.getPagingBar(store , 1),

            columns: col
        });
...