2010-10-13 3 views
0

Я хочу взять некоторые данные с сервера и оценить его.
если я Eval 1 элемент в формате JSON, он отлично работает, но если я Eval больше, я получаю сообщение об ошибке
это операция (с помощью JQuery для AJAX):EXTjs - элементы EVAL multi json

,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 столбца id + email. с использованием ошибки возврата 2 столбцов: this.config [col] is undefined
[Break this this error] return this.config [col] .width;

USED один колонка - хорошо подходит.

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

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

Любая идея?

ответ

1

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

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"}}]') 

редактировать:

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

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"}}}') 

редактировать # 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

В пути я beleave что Eval работает, но ExtJS не понимает, что я все еще получаю ту же ошибку: this.config [Col] неопределен [Перерыв на этой ошибке] это вернуть. конфигурации [Col] .width; благодаря! – fatnjazzy

+0

Отметьте мой ответ, я его отредактировал – ncardeli

+0

Спасибо, но он не работает, такая же ошибка. Я не думаю, что редактор строк поддерживает этот способ. – fatnjazzy

0

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

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