使用ExtJS更新其他窗口中事件的一个窗口的内容

时间:2010-08-24 08:54:45

标签: javascript ajax extjs ajax-request

前段时间我开始学习ExtJS库,现在我想创建以下内容:

有一个浏览器窗口,它是垂直分开的 在左侧有一个TreePanel,其中包含目录和子目录(只有2级深) 在右侧,将有一个输出所选子目录的内容。

我已经完成了界面部分,但是当用户点击左侧的子目录时,我不知道如何更改右侧的内容。我可以使用Ext.Ajax.request发出请求,但我不知道如何触发右侧内容的更新。

顺便说一下。正如我提到的那样,左侧是TreePanel,右侧是GripPanel,它们在Viewport中有xtype:'panel',但我不认为这对于那个问题是不可能的。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

首先,您需要注册用户在树状区域中选择节点的事实,这可以通过以下方式完成:

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

其中'yourtreepanel'是您的treepanel的名称(如果将treepanel分配给变量,否则使用Ext.getCmp('yourtreepanel')。getSelecti ....)和'whattodonext'是函数的名称在用户选择节点时调用。

函数'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选项发送您可能拥有的任何特定POST参数,以决定所提供的内容。

不要忘记,如果遇到困难,请尝试使用Ext.getCmp('objectname')而不仅仅是'objectname'.operation来引用您的对象....

祝你好运!