0

我正在尝试动态更改面板中 BUTTON 上的文本:

我给出的初始文本是:var gost = "HPCL Jan 20 Put,40 cents ..";

    var bottomdetail = new Ext.Panel({
    flex:1,
    padding: 1,
    layout : {
                type: 'vbox',
                pack: 'center',
                align: 'stretch'
             },
    stretchX: true,
    items:[{
           xtype: 'button',
           flex: 1,
           baseCls: 'round',
           html: '<table border="0" height="100%" width="100%"><tr><td width="100%" style="color:#fff; padding-left:5px;" valign="middle">'+ gost + '</td><td valign="middle" align="right" style="padding-right:5px;"><img src="resources/Images/rightarrow.png"></img></td></tr></table>',
           handler: function(){window.location='DetailsPanel.html';}
           }]
});

这是我用它来更改文本的点:

    var shakepanel = new Ext.Panel({    
                                layout : {
                                            type: 'hbox',
                                            pack: 'center',
                                            align: 'stretch'
                                         },
                                stretchX: true,
                                flex:1,
                                disable: true,
                                items: [{
                                        xtype: 'button',
                                        disable: true,
                                        layout: 'fit',
                                        ui: 'decline',
                                        text: 'SHAKE',
                                        flex:1,
                                        handler: function(){
                                            gost="ola i changed it";
                                            alert(bottomdetail.getText());
                                            }
                                     }]
                        });     

当我单击“SHAKE”按钮时,“gost”的值会更新,但如何将更新后的 gost 文本应用到其中包含按钮的底部细节面板......

4

3 回答 3

0

使用布局表中的动态文本向 TD 添加一个 id,例如“id=titleCell”。

然后在更新文本后调用此函数,以删除此单元格中的现有文本节点并添加新节点。

函数更新标题(){
  var titleCell = document.getElementById('titleCell');
  var updatedTitleText = document.createTextNode(gost);

  titleCell.removeChild(titleCell.firstChild);
  titleCell.appendChild(updatedTitleText);
}

您可以在更新 gost var 后直接调用它

于 2011-01-19T11:35:06.567 回答
0

什么不是top off bottomdetail 和shakepanel?- 应该是 PAPA (新人总是跟 PAPA 说兄弟)....

  • 在shakepanel->按钮->处理程序中:fireEvent('gostChanged',gost)
  • 告诉 PAPA 听它(在 listener 或 .on 方法中)
  • 当被捕获时,PAPA 将更改 bottomdetail -> 按钮上的 html(最好有 ref: 以便更轻松地访问而不是 Ext.getComp 或其他搜索)
于 2011-01-19T12:18:49.047 回答
0

Ext.Button 对象有一个 .setText(newText) 方法。所以像(高度解释):

var button = new Ext.Button({
    title: 'Text1',
});

var bottomdetail = new Ext.Panel({
    items:[button]
});

var shakepanel = new Ext.Panel({
    items: [{
        xtype: 'button',
        handler: function() {
            button.setText('Text2');
        }
    }]
});     

...

我不完全确定你为什么将整个 HTML 表格放在一个按钮内,但是......希望你明白这一点。

如果您尝试将更改的数据绑定到组件(如按钮或面板),可能在这样的任意 HTML 中,您可以探索 tpl 选项,该选项创建一个模板,然后您可以 .update()

于 2011-01-20T01:04:26.387 回答