サーバーから返されたデータに基づいてフォームを動的に構築しようとしています。<PROJECT NAME>/store
この例では、フォルダーに自分のストアがありません。私はそれを持ってい<PROJECT NAME>/store/admin
ます。次のように定義されます。
Ext.define('APP.store.admin.TaskOption', {
extend: 'Ext.data.Store',
autoLoad: false,
storeId: 'adminTasksOptions',
model: 'APP.model.admin.TaskOption',
sorters: [
{ property: 'order', direction: 'ASC' }
]
});
注意してくださいstoreId
。
コントローラーで、init
メソッドでこれを試しましたが、機能しませんでした (つまり、taskOptionsLoaded
メソッドを呼び出しませんでした。
Ext.create('APP.store.admin.TaskOption');
this.getAdminTasksOptionStore().on({
scope: this,
load : this.taskOptionsLoaded
});
this.getAdminTaskOptionStore
また、ブレークポイントを実行してチェックすると、正しいストアが返されたことにも注意してください。ストアをサブフォルダーに入れているので、それが起こっていると思いますか? 確かではありませんが、フォルダー構造を再編成してそれらすべてをstore
フォルダーに入れる代わりに (私はたくさんのストアを持っています; 大規模なプロジェクトです)、次の人が簡単にファイルを整理できるようにするための解決策を見つけようとしています.
だから今私はこれを試しましたが、これもうまくいきません。これは、同じコントローラー内のメソッドで実行されています。
Ext.getStore('adminTasksOptions').load(
{'params' : {'t_id' : this.selectedTaskTemplate},
callback: function(store, records, success) {
this.taskOptionsLoaded(store, records, success);
}
},this);
行にブレークポイントを設定するとthis.taskOptionsLoaded
、それはコントローラー ( ) スコープではなく、ストア スコープ内にありthis
ます。
ロード コールバックを独自のストアに追加しstoreId
、コントローラーのスコープ内でメソッドを実行する最もクリーンな方法は何ですか?
それが理にかなっていることを願っています。