2013-08-16 7 views
0

Я столкнулся с проблемой в ExtJS 4.2, что метод store.load() не загружает данные с сервера, а только извлекает json. Мои JS/itfx/ресурсы/genres.json файл:ExtJS: store.load() не загружает данные

[{"name":"Action & Adventure","code":"ACTION-ADVENTURE-00"},{"name":"African","code":"AFRICAN-00"},{"name":"Anime","code":"ANIME-00"},{"name":"Bollywood","code":"BOLLYWOOD-00"},{"name":"Classics","code":"CLASSICS-00"},{"name":"Comedy","code":"COMEDY-00"},{"name":"Concert Films","code":"CONCERT-FILMS-00"},{"name":"Documentary","code":"DOCUMENTARY-00"},{"name":"Drama","code":"DRAMA-00"},{"name":"Foreign","code":"FOREIGN-00"},{"name":"Holiday","code":"HOLIDAY-00"},{"name":"Horror","code":"HORROR-00"},{"name":"Independent","code":"INDEPENDENT-00"},{"name":"Kids & Family","code":"KIDS-FAMILY-00"},{"name":"Made for TV","code":"MADE-FOR-TV-00"},{"name":"Middle Eastern","code":"MIDDLE-EASTERN-00"},{"name":"Music Documentaries","code":"MUSIC-DOCUMENTARIES-00"},{"name":"Music Feature Film","code":"MUSIC-FEATURE-FILMS-00"},{"name":"Musicals","code":"MUSICALS-00"},{"name":"Regional Indian","code":"REGIONAL-INDIAN-00"},{"name":"Romance","code":"ROMANCE-00"},{"name":"Russian","code":"RUSSIAN-00"},{"name":"Sci-Fi & Fantasy","code":"SCIFI-FANTASY-00"},{"name":"Short Films","code":"SHORT-FILMS-00"},{"name":"Special Interest","code":"SPECIAL-INTEREST-00"},{"name":"Sports","code":"SPORTS-00"},{"name":"Thriller","code":"THRILLER-00"},{"name":"Turkish","code":"TURKISH-00"},{"name":"Urban","code":"URBAN-00"},{"name":"Western","code":"WESTERN-00"}] 

Моя модель:

Ext.define('ITFX.model.films.info.FilmGenre', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'name', type: 'string'}, 
     {name: 'code', type: 'string'} 
    ] 
}); 

Мой магазин:

Ext.define('ITFX.store.films.info.FilmGenre', { 
    extend: 'Ext.data.Store', 

    model: 'ITFX.model.films.info.FilmGenre', 

    proxy: { 
     type: 'ajax', 
     url : 'js/itfx/resources/genres.json', 
     reader: { 
      type: 'json' 
     } 
    } 
}); 

Таким образом, после выполнения кода abowe:

var allFilmGenresStore = Ext.create('ITFX.store.films.info.FilmGenre'); 
allFilmGenresStore.load(); 

Метода

allFilmGenresStore.getCount(); //0 
allFilmGenresStore.getTotalCount(); //0 

вернется, что магазин не ничего загружено Что я делаю неправильно? Заранее спасибо

+0

Любых ошибок в инструментах разработчика Chrome консоль? Если вы посмотрите на запрос XHR в инструментах разработчика Chrome, вы видите, что происходит фактический запрос ajax? – bakamike

+1

Ожидаете ли вы, что данные будут заполнены? Ajax является асинхронным, и вы не можете запустить allFilmGenresStore.getCount() сразу после allFilmGenresStore.load(), поскольку данные, возможно, еще не возвратились с сервера. – Reimius

ответ

0

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

allFilmGenresStore.load({ 
    callback : function(records, options, success) { 
     // some custom logik 
    } 
}); 
+0

Вы также можете добавить слушателя на мероприятие «загрузка» магазина, чтобы что-то сделать с данными. – dbrin

0

Вы должны изменить читатель

reader: { 
      type: 'json', 
      root: 'root' 
     } 

и отправить json_encode('root' => $data);

Я надеюсь, что это поможет вам

Смежные вопросы