Singletons Ext JS (4.2.1) и магазины

Как вы реализуете магазин, чтобы быть синглтоном?

В Architect мой магазин имеет флажок свойства, который добавляет свойство

singleton: true,

Если я добавлю это, а затем перезагрузить приложение, оно не загружается (я могу дать более подробную информацию, если требуется об ошибке)

Uncaught TypeError: object is not a function VM5238:3
(anonymous function) VM5238:3
Ext.ClassManager.instantiate ext-all-debug.js:5485
(anonymous function) ext-all-debug.js:2109
Ext.define.getStore

Если я затем удаляю это свойство, оно загружается нормально, но там, где я использую Ext.getStore("MyStore"), тогда возвращаемые хранилища содержат разные данные в зависимости от того, где я использую хранилище. У меня есть один контроллер, где я использую имя класса внутри метода getStore, и это используется в паре функций внутри этого одного контроллера.

Кроме того, в документации нет документации о свойстве singleton. Если я смотрю на Ext.data.Store, там нет синглтона.

1 ответ

Решение

Я рекомендую вам сделать это способом ExtJS для обработки хранилищ и экземпляров хранилищ...

Использовать storeId вместе с Ext.StoreManager, Обратите внимание, что каждый storeId должны быть уникальными, и как только вы создадите экземпляр магазина, он зарегистрируется в Ext.StoreManager с этими storeId, Вы можете получить магазин, позвонив lookup('storeId') на Ext.StoreManager, И да, вы можете сделать это из любого места в вашем коде.

Например все Ext.Components этот миксин Ext.util.Binable (которые являются наиболее (все) нативными компонентами, связывающими магазин) будут в порядке с storeId строка, присвоенная store свойство cfg. Binable mixin будет искать его внутри StoreManager. Если вам нужно сделать это самостоятельно

//...
store: Ext.StoreMgr.lookup('storeId') || Ext.create('YourStoreClassname')
//...
Другие вопросы по тегам