autoLoad: true
이라는 저장소에 연결된 그리드가 있습니다. 문제는 메뉴를 통해 나중에 액세스 할 때만보기가 만들어 지더라도 저장소가 응용 프로그램 시작시로드된다는 것입니다.extjs - autoload가있는 저장소가 응용 프로그램 시작시로드되지 않아야합니다.
나는 Application.js와 뷰에서 저장소를 참조했지만 저장소 나 뷰를 명시 적으로 instatiating하지는 않습니다.
뷰가 필요할 때만 저장소를로드하는 방법을 모르겠습니다.
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