Жестко закодированные данные в глобальном хранилище не отображаются в сетке extjs

У меня есть глобальный магазин extjs, у меня есть жестко закодированные поля и данные:

Ext.define('Registration.store.SavedSessions',{
    extend: 'Ext.data.Store',
    storeId: 'savedsessions',

    fields:[
    "id",
    "title",
    "dateStart"
    ],

    data: [
        {
            id: 1,
            title: 'test',
            dateStart: new Date()
        }
    ]

});

Глобальное хранилище регистрируется через файл Application.js:

Ext.define('Registration.Application', {
    extend: 'Ext.app.Application',

    name: 'Registration',

    stores: [
        'SavedSessions'
    ],
    ...

У меня также есть сетка, в которую я пытаюсь загрузить магазин:

Ext.define("Registration.view.cart.savedsessions.SavedSessions",{
    extend: "Ext.grid.Panel",

    xtype: 'savedsessions',

    store: Ext.data.StoreManager.lookup('savedsessions'),

    columns:[
        {
            text: 'Date',
            dataIndex: 'dateStart'
        },
        {
            text: 'Title',
            dataIndex: 'title',
            flex: 1
        }
    ]
});

Глядя на документы, все выглядит правильно. Проблема, с которой я сталкиваюсь, заключается в том, что магазин не загружается.

Когда я открываю консоль javascript и подсчитываю количество записей в хранилище сетки, я получаю 0:

сохранить из сетки

Я не уверен, как это вообще может произойти, учитывая, что данные жестко закодированы в хранилище.

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

store получен непосредственно в консоли js

Что мне здесь не хватает?


person Chris Schmitz    schedule 09.10.2015    source источник


Ответы (1)


Зачем использовать StoreManager, чтобы получить store? Просто используйте storeId :

store: 'savedsessions',
person Tarabass    schedule 09.10.2015
comment
Спасибо. Это определенно исправило это. Я торопился и прошел мимо первый пример, который они показывают в документах для сетки. Я еще не использовал много глобальных магазинов (в основном я использую магазины в своей модели представления), и по какой-то причине я подумал, что storeId - это то, что вам нужно, чтобы найти магазин с помощью storemanager. Спасибо, что указали, что это не нужно. Тем не менее, знаете ли вы, почему он получит магазин, но не жестко закодированные данные, когда будет извлечен через менеджера магазина? - person Chris Schmitz; 09.10.2015
comment
Это может иметь несколько причин. Это может быть порядок загрузки представлений и хранилищ, способ загрузки и создания экземпляров представлений и других объектов. Фреймворк сначала загружает все ваши объявления классов, а затем создает экземпляры этих классов только при необходимости. Таким образом, ваше объявление представления уже загружено, прежде чем будет создан экземпляр хранилища. Имейте в виду, что вы никогда не используете объекты в своем объявлении представления. Не используйте менеджеров (я их вообще никогда не использую), не используйте new или что-то в этом роде. sencha.guru/2015/07/29/instances-on -прототип-плохой - person Tarabass; 09.10.2015
comment
Попался. Спасибо за это дополнительное разъяснение и, как всегда, за вашу помощь. - person Chris Schmitz; 09.10.2015