Extjs4 Ext JS 4-如何更改可以';不能被ID引用

Extjs4 Ext JS 4-如何更改可以';不能被ID引用,extjs4,Extjs4,我非常感谢您对以下问题的帮助: 我需要能够更改一个项目的内容(div或textfield),但问题是同一个窗口将有多个实例,因此我不能使用div id 我试过这个小例子: var myBtnHandler = function(btn) { myPanel.items.items[0].html = "Changed by click!"; myPanel.doLayout(); } var fileBtn = new Ext.Button({ text : 'Chan

我非常感谢您对以下问题的帮助:

我需要能够更改一个项目的内容(div或textfield),但问题是同一个窗口将有多个实例,因此我不能使用div id

我试过这个小例子:

var myBtnHandler = function(btn) {
    myPanel.items.items[0].html = "Changed by click!";
    myPanel.doLayout();
}

var fileBtn = new Ext.Button({
    text : 'Change',
    handler : myBtnHandler
});

var panel1 = {
    html : 'Original content.'
};

var myPanel = new Ext.Window({
    title : 'How to change it?',
    items : [
        panel1,
        fileBtn
    ]
});
myPanel.items.items[0].html = "Changed on load!";
myPanel.show();
通过myPanel.items.items[0]引用元素在加载时工作,但在按钮处理程序中不工作-这是与范围相关的问题吗?如何引用没有ID的元素

多谢各位


H.

有几个函数可以遍历属于容器的元素。尝试使用例如down()


其中“button”参数的意思是“告诉我哪种类型的元素等于“button”。查看Sencha文档也可以查询各种元素:

有几个函数可以遍历属于容器的元素。尝试使用例如down()


其中“button”参数的意思是“告诉我哪种类型的元素等于“button”。查看Sencha文档也可以查询各种元素:

问题与范围无关。第一次设置html属性时,组件尚未呈现,因此在初始呈现时,它将从组件中读取html属性。第二次,你只是在一个对象上设置一个属性,它不会有任何反应

相反,应该使用update()方法


这个问题与范围无关。第一次设置html属性时,组件尚未呈现,因此在初始呈现时,它将从组件中读取html属性。第二次,你只是在一个对象上设置一个属性,它不会有任何反应

相反,应该使用update()方法


以下是民政事务局局长的答覆。把他的建议和你的例子联系起来

var myBtnHandler = function(btn) {
    btn.up('window').down('panel').update('Changed by click!');
}

var fileBtn = new Ext.Button({
    text : 'Change',
    handler : myBtnHandler
});

var panel1 = {
    html : 'Original content.'
};

var myPanel = new Ext.Window({
    title : 'How to change it?',
    items : [
        panel1,
        fileBtn
    ]
});

myPanel.show();
myPanel.update('Changed on load!');

以下是民政事务局局长的答覆。把他的建议和你的例子联系起来

var myBtnHandler = function(btn) {
    btn.up('window').down('panel').update('Changed by click!');
}

var fileBtn = new Ext.Button({
    text : 'Change',
    handler : myBtnHandler
});

var panel1 = {
    html : 'Original content.'
};

var myPanel = new Ext.Window({
    title : 'How to change it?',
    items : [
        panel1,
        fileBtn
    ]
});

myPanel.show();
myPanel.update('Changed on load!');

谢谢你,但是我不能让它工作——不管我如何重新排序代码,不管我使用的是doLayout()还是update()。您能提供一些工作代码吗?谢谢,但我无法让它工作-无论我如何重新排序代码,无论我使用的是doLayout()还是update()。您能提供一些工作代码吗?这个解决方案也很有效-谢谢大家,你们都很有帮助。没问题,但我强烈建议不要使用items.items[0]来引用您的组件。如果您添加组件而忘记更新索引值,那么养成这种习惯将导致出现错误。此解决方案也很有效-谢谢大家,你们都很有帮助。没问题,但我强烈建议不要使用items.items[0]引用您的组件。如果您添加组件并忘记更新索引值,那么养成这种习惯将导致bug。
var myBtnHandler = function(btn) {
    btn.up('window').down('panel').update('Changed by click!');
}

var fileBtn = new Ext.Button({
    text : 'Change',
    handler : myBtnHandler
});

var panel1 = {
    html : 'Original content.'
};

var myPanel = new Ext.Window({
    title : 'How to change it?',
    items : [
        panel1,
        fileBtn
    ]
});

myPanel.show();
myPanel.update('Changed on load!');