3

ビューとコントローラー間で共有されるように、アプリケーションからいくつかのイベントを共有する必要があります。たとえば、イベント:「サーバーからの更新が利用可能です」。そのために、コントローラーで fireEvent("updatesAvailable") を実行できますが、これにより、他のコンポーネントが、そのイベントを発生させる特定のコントローラーにサブスクライブするようになります。

私が望むのは、すべてのアプリケーション ロジック イベントのサブスクリプションを保持するシングルトン オブジェクトを持つことです。

現在、1 つの共有ビュー インスタンスを使用してすべてをサブスクライブすることで問題を解決できることがわかりました。しかし、アプリケーション内のすべてのイベントを認識する、すぐに使える Event Dispatcher があることを知りたいです。

4

1 に答える 1

3

私が理解している限り、パターン「イベントバス」を使用したいですか?すべてのST2アプリケーションに存在する「グローバル」および単一のオブジェクト(Ext.Viewport)を使用できます。少なくとも私は自分のアプリで作成していますが、今までは何も悪いことはありません。イベントハンドラーを作成するのに最適な場所は、コントローラーのinit()メソッドであることに注意してください。

Ext.define('Myapp.controller.ActivitiesController', {

extend : 'Ext.app.Controller',

requires : [],
    config: {
        refs: {
            myview: 'myview'
        }
...
    init: function () {
    var me = this;

    Ext.Viewport.on({
        scope: this,
        addactivitytype: function (config) {
                    var myview = me.getMyview(),
                        record = config.record
...

          });
     }
});

別のコントローラー(またはこれまでのビュー)で、次のように書くことができます

 addActivityTypeTap: function (record) {
      ....
      Ext.Viewport.fireEvent('addactivitytype', {
        record: record
      });
 }
于 2012-06-25T19:29:34.510 に答える