前段时间我开始学习ExtJS库,现在我想创建以下内容:
有一个浏览器窗口,它是垂直分开的 在左侧有一个TreePanel,其中包含目录和子目录(只有2级深) 在右侧,将有一个输出所选子目录的内容。
我已经完成了界面部分,但是当用户点击左侧的子目录时,我不知道如何更改右侧的内容。我可以使用Ext.Ajax.request发出请求,但我不知道如何触发右侧内容的更新。
顺便说一下。正如我提到的那样,左侧是TreePanel,右侧是GripPanel,它们在Viewport中有xtype:'panel',但我不认为这对于那个问题是不可能的。有什么建议吗?
答案 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来引用您的对象....
祝你好运!