2

ここに私のapp.jsコード:

Ext.Loader.setConfig({
    enabled: true
});

Ext.application({
    name: 'KP',
    appFolder: 'scripts/app',

    controllers: [
        'login.Login'
    ],

    views: [
        'login.Login'
    ],


    launch: function () {

        var view = Ext.widget('login')
    }


});

アプリケーションで他のビュー、コントローラー、モデル、およびストアを使用したい場合、それらを app.js で定義する必要がありますか? (このように:コントローラ[....すべてのコントローラ.....]) 私のコントローラでinit関数を動作させる他の方法はありますか?ありがとう!

4

3 に答える 3

4

多くの方法があります...

最初にいくつかの基本に従ってください:

アプリケーションコントローラーのコントローラー配列内にリストされているすべてのコントローラーは、起動時にインスタンス化されます(アプリケーションは、onReadyイベントで初期化されます。また、リストされているコントローラーのinit( )メソッドとonLaunch()メソッドが呼び出されます。詳細については、リンクされたAPIを参照してください。これが発生します)。これで、インスタンス化された各コントローラーは、ストア、ビュー、およびモデルを初期化します( storeIdを上書きしてExt.StoreMgrに追加しながら、各ストアのインスタンスを作成するゲッターを作成します)。各コントローラーには、独自のモデル、ストア、およびビューが含まれることに注意してください。

アプリケーションコントローラーにリストされていないコントローラーを受け取る最も簡単な方法は、アプリケーションコントローラーの参照を使用してgetController(name)を呼び出すことです。

この方法を使用している間、コントローラーインスタンスを受信する間、getterメソッドは呼び出されたコントローラーのinit()またはonLaunch()メソッドを呼び出さず、コントローラーを取得または作成しようとするだけであることを知っておくことが重要です。また、これらのコントローラーのこれらのメソッドのAPIは正しくなくなっていることにも注意してください。これらのコントローラーにinitboolを設定し、getController(name)メソッドから返される参照を確認する必要があります。undefined / falseの場合は、自分でinit() / onLaunch()を呼び出し、その後に設定します。私はこれらの手法を自分で使用して、より大きなアプリケーションの初期負荷を軽減します。ほんの一握りのコントローラーでは、これは本当に必要ないと思います。

アップデート

4.1.xリリースでのいくつかの変更により、コントローラーを手動で初期化する必要がなくなりました。これは、getControllerメソッドによって実行されます。

于 2012-09-03T08:13:21.290 に答える
0

アプリケーションで定義したコントローラは、アプリケーションlaunch()が呼び出される前にロードされます。各コントローラーがロードされると、そのmodelsviewsおよびstores(MVS) もロードされます。

アプリケーションで MVS を定義することもできますが、プログラマーがデフォルトではなく要求に応じてコントローラー (および関連する MVS) をロードできるため、各コントローラーで関連する MVS を定義することをお勧めします。これは、再利用性の観点からも優れた方法です (したがって、コントローラーを再利用する場合は、どの MVS が付属しているかがわかります)。

たとえば、システムに何らかのエラーが発生した場合に表示するカスタム ウィンドウのようなものなど、コントローラーなしで使用する場合、アプリケーションにいくつかのビューを含めることができます。

于 2012-09-03T08:23:02.823 に答える
0

コントローラはいくつでも定義できます。階層を実装するには、その中の特定のコントローラーに関連するビューとストアを定義できます。

例えば:

controller/
  artists.js (inside: artistsView1.js, artistsView2.js, artistsStore.js)
  paintings.js (inside: paintingsView1.js, paintingsStore.js)

コントローラーで使用されるすべてのビューとストアは、Applocation の読み込み中に読み込まれ、初期化されます。

于 2012-09-03T08:19:15.650 に答える