【问题标题】:Update content of one window on event in other window with ExtJS使用 ExtJS 更新另一个窗口中事件的一个窗口的内容
【发布时间】:2010-08-24 18:59:50
【问题描述】:

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

有一个浏览器窗口,垂直分隔。
左侧有一个带有目录和子目录的 TreePanel(只有 2 级深)。
右侧将输出所选子目录的内容。

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

顺便说一句。正如我所提到的,左侧是 TreePanel,右侧是 GripPanel,它们在 Viewport 中使用 xtype : 'panel',但我认为这对于这个问题并不重要。

有什么建议吗?

【问题讨论】:

    标签: javascript ajax extjs ajax-request


    【解决方案1】:

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

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

    'yourtreepanel' 是你的树形面板的名称(如果树形面板被分配给一个变量,否则使用 E​​xt.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....

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多