に読み込むべきではありません。問題は、ビューが後でメニューからアクセスされたときに作成されたとしても、ストアがアプリケーションの起動時にロードされることです。ExtJSの - 自動ロードとストア真のは、私が<code>autoLoad: true</code>でストアにリンクされたグリッドを持つアプリケーションの起動
私はApplication.jsで、ビューに店を参照しているが、私は明示的に店舗でもビューもないinstatiatingていませんよ。
私は、ビューで必要なときにだけストアがロードされていることを達成する方法がわかりません。
autoLoad: true
に設定すると、アプリケーションの起動時にストアがロードされます。autoLoad: false
を設定すると、ストアがまったく読み込まれません。
私はこれはかなり基本的なものですけど、私はこれまでこだわっています。
ここ基準に関連するすべてのコードである:
APP /ストア/ 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