1

ビューページにロードマスクを適用したい。アプリケーションの起動中に、一部のビューページは後で表示されるデータの読み込みに時間がかかるため、その間に読み込みに時間がかかる場合は、「loading....」などのメッセージを使用してユーザーにload-maskを表示します。いくつかのサンプルから、ロードマスクを適用しましたが、そのページにアクセスするたびにそのメッセージが表示されます。ここで時間を設定するので、これは悪い方法です。データがない場合は、ページがデータを取得するまで、ロードマスクをユーザーに表示する必要がある場合は、このようなロードマスクを適用する必要があります。誰か助けてください。これを達成する方法

私のコードはここにあります: コントローラーレベルで、ロードマスクのIDを取得し、以下のコードのようにプロパティを設定しています

onCompanyPageLoad: function () {
    var loader = Ext.getCmp('mask');        
    loader.setMessage("Loading...");
    loader.setIndicator(true);
    loader.setTransparent(false);      
    loader.show();        
    setTimeout(function () {            
        loader.hide();
    }, 1000);
}
4

3 に答える 3

17

user978790の回答は、Sencha Touch 2 でローディング マスクを表示および非表示にする正式な方法です。

うまくいかない場合は、次のようなことをしている可能性が非常に高いです。

Ext.Viewport.setMasked({xtype:'loadmask',message:'your custom loadmask'});
... then do something here
Ext.Viewport.setMasked(false);

Javascript は非同期であるため、コード行が上記の順序で実行されることは保証されないことに注意してください。その場合、Sencha Touch がローディング マスクを初期化し、すぐに破棄する可能性があります。ローディングマスクを正しく使用するには:

  1. 上記のようにローディング マスクを初期化します。
  2. マスクの初期化をロードした後に確実に起動される特別な関数をExt.Viewport.setMasked(false);入れます。イベント ハンドラ、または JSONP/AJAX リクエストの成功関数。
于 2012-06-26T03:00:37.600 に答える
7

私はそれを次のようにします:

Ext.Viewport.setMasked({xtype:'loadmask',message:'your custom loadmask'});

その後、あなたは使用することができます

Ext.Viewport.setMasked(false);

ロードマスクの表示を停止するにはこれは、ビューの一部にのみマスクを表示する場合のコンポーネントでも機能します

于 2012-06-25T12:16:59.800 に答える
0

これをすべて削除してください。ローダーの使用方法がわかります。最初にメインページのhtmlでローダーを追加してください。

<div id="loader"></div>//add id#loader with background loading image

ページが読み込まれた後、コントローラーを追加しますExt.get('loader').destroy();//ページが完全に読み込まれると、読み込みdivが読み込まれます

于 2012-06-25T12:20:17.787 に答える