我有一個網格鏈接到與autoLoad: true
的商店。問題在於,應用程序啓動時存儲會被加載,即使稍後通過菜單訪問時創建視圖也是如此。extjs - 應用程序啓動時不應加載自動加載的真實存儲
我已經在Application.js中和視圖中引用了商店,但我並沒有明確表示商店和視圖。
我不知道如何實現該商店只在視圖需要時加載。
- 如果我設置
autoLoad: true
,商店被裝載在應用程序啓動。 - 如果我設置了
autoLoad: false
,則該商店根本不會被加載。
我知道這是非常基本的,但我堅持到目前爲止。
這裏是所有參考相關的代碼:
應用程序/商店/ Owners.js
Ext.define('Mb.store.Owners', {
extend: 'Ext.data.Store',
model: 'Mb.model.Owner',
autoLoad: true,
proxy: {
...
});
的application.js
Ext.define('Mb.Application', {
name: 'Mb',
extend: 'Ext.app.Application',
models: [
'Owner'
],
stores: [
'Owners'
],
...
應用程序/視圖/ Owners.js
Ext.define('Mb.view.winbiz.Owners', {
extend: 'Ext.grid.Panel',
alias: 'widget.test-gridPanel',
store: 'winbiz.Owners',
columns: [{
...
視圖被實例化控制器:
Ext.define('Mb.controller.Winbiz', {
extend: 'Ext.app.Controller',
views: [
'Owners'
],
init: function(){
this.control({
'menu #test': {click: this.onMenuTest},
})
},
onMenuTest: function(){
this.getController('Main').addToMainTab('test-gridPanel');
},
謝謝,這是一個完美的解決方案。 –
我不喜歡在視圖中的代碼。如果代碼在視圖中應該是控制器的責任,那麼沒有理由使用控制器。該解決方案還會在視圖的每個渲染上重新加載商店 - 可能不必要? – oldwizard