1

これが私のアプリケーションアーキテクチャです。

var loginView = Ext.create('Ext.Panel',{
    id: 'LoginView',
    .....
});
var homeView = Ext.create('Ext.TabPanel',{
    id: 'HomeView',
    items: [
           {
                xtype: 'list',
                title: 'Home',
                store: Ext.create('TweetStore'),
                disableSelection: true,
                ....
            },
            {
                title: 'Reply',
                ....
            },
            {
                title: 'DM',
                ....
            }
    ]
});
var mainView = Ext.create('Ext.Panel',{
    id: 'MainView',
    layout: 'card',
    items: [ loginView, mainView ]
});
Ext.define('TweetStore', {
        extend: 'Ext.data.Store',
        config: {
            fields: ...
            pageSize: 25,
            autoLoad: true,
            proxy: {
                type: 'ajax',
                url: '/home',
                pageParam: 'page',
                limitParam: 'count',
                reader: {
                    type: 'json'
                }
            }
        }
    });

には2つのパネルがありますMainViewLoginViewユーザーがユーザー名とパスワードを入力するログインページです。承認が成功すると、2番目のパネルにが表示さHomeViewれます。

私の質問:

  1. TweetStore承認後にデータをロードする必要があります。つまり、ショーHomeViewが表示されると、データのロードが開始されます。ただし、showパネルがまだ非表示になっている場合でも、イベントはトリガーされます。どのようなイベントをキャッチする必要があります。
  2. アプリケーションが起動したら、ajaxリクエストを送信して、ユーザーがログインしているかどうかを確認します。ログインしている場合は、LoginView非表示と表示を確認しHomeViewます。どのイベントでこれを確認する必要がありますか?
4

2 に答える 2

1

painted()Q. 1)イベントを聞く必要があります。

このコンポーネントが実際に画面に表示(ペイント)されるたびに発生します。これは、DOM要素に対して「読み取り」操作を実行する必要がある場合に役立ちます。つまり、自然なサイズと位置を計算します。

Q. 2)initialize()イベント時にユーザー認証のためのajaxリクエストを送信します。

コンポーネントが初期化されたときに発生します

于 2012-05-23T08:29:34.737 に答える
0

-最初の質問:

paintedイベントは良さそうに見えますが、実際、私の経験として、SenchaTouch2の現在のリリースではバグがひどくいっぱいです。その存在とドキュメントに依存しないでください。

あなたが説明したことによると、特定のイベント(承認)の後にストアをロードしたいのは明らかですが、その後にカスタムイベントを発生させるのはどうですか?例えば:

loginForm.fireEvent('authenticated', this)(または必要な追加パラメータ)

次に、コントローラーで、表示中のイベントをリッスンしauthenticatedますloginForm

--2番目の質問:

あなたが言ったように、あなたはあなたのアプリケーションが始まった直後にいくつかのプロセスを実行したいと思っています。したがって、コードを配置する適切な場所は、のlaunch()機能ですapp.js。単純な。

于 2012-05-23T10:19:33.293 に答える