私はベースコントローラーを作成してそれに書き込もうとしました:
Ext.define('My.Users.controller.Role', {
extend : 'Ext.app.Controller',
stores : [
'Modules', 'ModulesList'
],
models : [
'Modules', 'ModulesList'
]
});
しかし、getModulesStore()やgetModulesListModel()のように(この基本クラス、またはMy.Users.controller.Groupのような子クラスで)ゲッターを使用しようとすると、関数ではないというエラーが発生します。 。そしてFirebugでは、子クラスとそのスーパークラスにこのメソッドがないことがわかります。どうすれば修正できますか?
このバグを再現する方法の完全な説明:1)SenchaからExtJS4.1GPLをダウンロードします
2)アーカイブを解凍し、ディレクトリextjs-4.1.0 / examples / app /feed-viewer/に移動します。
3)ファイルfeed-viewer.htmlコメント行<script type="text/javascript" src="all-classes.js"></script>
で、jsファイルの動的ロードを強制します。これで、通常、プロジェクトファイルのコンテンツを編集できます。
4)フォルダーapp / controllerに、次のコードを使用してEntities.jsという名前のファイルを作成します。
Ext.define('FV.controller.Entities', {
extend: 'Ext.app.Controller',
models: ['Shared'],
stores: ['Shared']
});
5)ファイル内のArticles.jsとFeeds.jsの変更は「FV.controller.Entities」に拡張されます
6)フォルダーapp/modelおよびapp/storeで、コンテンツを含むShared.jsファイルを作成します
Ext.define('FV.model.Shared', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{
name: 'id',
type: 'int'
},
{
name: 'title',
type: 'string'
}
]
});
モデルと
Ext.define('FV.store.Shared', {
extend: 'Ext.data.Store',
model: 'FV.model.Shared',
proxy: {
type: 'ajax',
url: 'test.json',
reader: {
type: 'json',
root: 'item'
}
}
});
ストア用。
7)最後に、たとえば、Article.jsのinitメソッドでconsole.log(this);を試してください。Firebugでは、getSharedModel()メソッドとgetSharedStore()メソッドを取得できません。