2017-02-17 17 views
1

icCube Reporting V6では、iccubeの例に基づいてhttps://www.iccube.com/your-first-html-widget/というテンプレートウィジェットを作成しました。それで、私はすべてのJSコードをAfter renderイベントに入れました。データ変更時にウィジェットの完全リフレッシュを避けるにはどうすればよいですか?

レポート全体の使用中に変更され、このウィジェットのパラメータとして使用される可能性のある、ウィジェット作成時にいくつかの変数を定義してデフォルトにしたいと考えています。

問題が同様にデフォルトに私の変数をリセット、各データ変更で、ウィジェットが完全にリフレッシュして再構築されたということです...

は、それは我々がウィジェットを初期化し、可能性がある中でinit widgetイベントが欠落しています変数? on Data ReceivedAfter renderのイベントは、データ操作とレンダリングの管理を目的としていますか? (これらの変数に関して) ...私はちょうど間違ったやり方ですか?

答えて

2

レンダリングイベントが毎回呼び出された後、新しいデータが取得されるか、ウィジェットのプロパティの1つが変更されます。最新のものはまれですが、イベントの中でプロパティの一部が定義されている場合は可能です。

このメソッドにステータスを追加して、ウィジェットが既にレンダリングされているかどうかを確認します。これは、2つの方法で行うことができます。jqueryでdomが変更されたかどうかを確認するか、javascriptオブジェクトを追加します。

最初のものはjqueryで簡単で、javascriptオブジェクトをキャッシュする必要がない場合は、使用する必要があります。

1)当社は、html要素(data)にjavascriptオブジェクトをバインドするためにjqueryのを使用することができます:

var state = $node.data("widgetState"); 
    if (state) { 
     // it's not the first time 
     state.times = state.times+1; 
     $node.html("It's the " + state.times + " time you clicked "); 
    } 
    else 
    { 
     // it's the first time 
     $node.html("It's the first time you clicked, don't be shy"); 
     state = { times : 1 } ; 
     $node.data("widgetState", state); 
    }  

2)icCubeはあなたにもできる6.0.4以来二番目のために我々は2つのソリューションをしましたローカル状態オブジェクトを取得するには、コンテキストを使用し、context.widgetState()

は、あなたが作業例hereを確認することができます。

関連する問題