Невозможно загрузить данные магазина в EXTJS Simplestore, используя JavaScript - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь повторно загрузить данные в хранилище, которое в дальнейшем используется GridPanel.Мой код выглядит так:

Ext.onReady(function(){

    myData =     [
        ['document','listsk','123','','','rat'],
        ['hiiiii','himself','rest','','','lap']
    ];

    // create the data store
    store = new Ext.data.SimpleStore({
        fields: [
            {name: 'cat'},
            {name: 'desc'},
            {name: 'edcsId'},
            {name: 'transformedEDCSUrl'},
            {name: 'transformedFormatsUrl'},
            {name: 'lineNotes'}
        ]
    });
    store.loadData(myData);

    // create the Grid
    grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
           {header: "<b>Category</b>",  sortable: true, dataIndex: 'cat'},
           {header: "<b>Description or Document Title</b>", sortable: true,  dataIndex: 'desc'},
           {header: "<b>EDCS ID #</b>", sortable: true, renderer: renderEDCSUrl, dataIndex: 'edcsId'}
           {header: "<b>URLs to Formats</b>", renderer: renderFormatsUrl},
           {id: 'lineNotes', header: "<b>Line Notes</b>", sortable: true, dataIndex: 'lineNotes'}
        ],
        viewConfig: { 
            forceFit: true
        },
        autoExpandColumn: 'lineNotes',
        stripeRows: true,
        collapsible: true
    })

    reload = function refreshGrid(data){
        store.loadData(data);
    }
})

Переменная mydata, видимая Firebug, выглядит так:

[
    ['document','listsk','123','','','rat'],
    ['hiiiii','himself','rest','','','lap']
]

И переменная данных в функции javascript refreshGrid также такая же:*

Я вызываю функцию refreshGrid следующим образом:

function load(response) {  
    reload(response.substring(response.indexOf('myData') + 9, 
           response.indexOf('function renderABC') - 2));
}

Для меня это выглядит как проблема с синтаксическим анализом JSON, поскольку данные поступают из бэкэнда нормально.Какой самый лучший способ для анализа строки JSON, поступающей из бэкэнда.Поведение при вызове javascript store.loadData заключается в том, что каждый символ в переменной данных рассматривается как отдельная строка в таблице, как показано ниже:

ExtJS Problem

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Похоже, вы предоставляете массив строк в хранилище, а не массив массивов, как он ожидает.

В результате хранилище обрабатывает каждое значение массива (фактически строку) как массив.Как только строки поддерживают ссылки по индексу (по крайней мере, в браузерах, отличных от IE), вы получаете описанное поведение.

0 голосов
/ 09 ноября 2011

Для всех, кто сталкивается с этой проблемой, быстрый выход - это функция eval, в противном случае используйте библиотеку для JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...