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')
//...