extjsを使用して他のウィンドウでイベントで1つのウィンドウのコンテンツを更新する

StackOverflow https://stackoverflow.com/questions/3554860

質問

しばらく前に、私はextjsライブラリを学び始めましたが、今は次のようになりたいと思います。

ブラウザウィンドウがあり、分離されています。
左側には、ディレクトリとサブディレクトリ(深さ2レベルのみ)を備えたトレパネルがあります。
右側には、選択したサブディレクトリのコンテンツの出力があります。

インターフェイスパーツを作成しましたが、ユーザーが左側のサブディレクトリをクリックしたときに右側のコンテンツを変更する方法はありません。 ext.ajax.requestでリクエストを行うことはできますが、右側のコンテンツの更新をトリガーする方法がわかりません。

ところで。左側がトレパネルであり、右側はグリッパネルであり、XType:「パネル」でビューポートにありますが、これがその質問のためのものではないと思います。

助言がありますか?

役に立ちましたか?

解決

まず、ユーザーがトレパネルでノードを選択しているという事実を登録する必要があります。これは以下を介して実行できます。

yourtreepanel.getSelectionModel().on('selectionchange', whattodonext);

ここで、「あなたのトレパネル」はあなたのトレパネルの名前です(トレパネルが変数に割り当てられた場合、そうでなければext.getcmp( 'yourtreepanel')を使用します。GetSelecti....)ユーザーはノードを選択します。

関数「whattodonext」は次のようになります。

    function whattodonext(){
        node=yourtreepanel.selModel.selNode;
        if(node){
            if(node.isLeaf()){
// this works out what you want to do if the user has selected a valid leaf node


            }else{
// otherwise...put anything you wish to happen here (i.e. if a folder has been selected)

            }

        }   
    }

次の部分は、コンテンツでパネルを右に更新することです(「mycontentpanel」と呼ばれた場合)。このコンテンツは、「mycontent.html」から、セクションでロードする必要があるとします

// this works out what you want to do if the user has selected a valid leaf node

コードを配置します。

mycontentpanel.load({
url: 'mycontent.html',
params: {
yourparam1:'param1value',
yourparam2:'param2value'
},
nocache: true,
timeout: 30
});

以上です!

Paramsオプションを使用して、どのコンテンツを提供するかを決定する特定の投稿パラメーターを送信できます。

忘れないでください、困難に遭遇した場合は、ext.getCmp( 'objectName')を使用してオブジェクトを参照してみてください。

幸運を!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top