问题描述
我正在使用extjs 3.4
我有动态添加到父面板的面板。 我想在点击时捕获迭代器(i)的价值。 该迭代器的值保存在隐藏元素中:
xtype: 'hidden',cls: 'hidden-ID',value: i
因此基本上,单击时我应该可以找到这个兄弟姐妹(也许按类名或类型?)。
但是我真的不知道如何-我一直试图寻找父母,但是从父母那里我找不到孩子。
示例为here
代码:
Ext.onReady(function () {
var eleCatdisplay2 = new Ext.Panel({
renderTo: Ext.getBody(),height: 350
});
for (i = 0; i < 10; i++) {
eleCatdisplay2.add(new Ext.Panel({
layout: 'hBox',border: false,style: {
marginTop: '10px'
},items: [{
xtype: 'displayfield',flex: 1,value: 'rowNum__' + i.toString()
},{
xtype: 'hidden',value: i
},{
xtype: 'panel',flex: 0.3,html: '<div>click to send</div>',listeners: {
'render': function (panel) {
panel.body.on('click',function () {
//here I would like to catch value of i
alert('test');
});
}
}
}]
}));
}
eleCatdisplay2.doLayout();
});
解决方法
您还可以在面板的某些自定义属性中存储值:
Ext.onReady(function () {
var eleCatDisplay2 = new Ext.Panel({
renderTo: Ext.getBody(),height: 350
});
for (i = 0; i < 10; i++) {
eleCatDisplay2.add(new Ext.Panel({
layout: 'hbox',border: false,style: {
marginTop: '10px'
},items: [{
xtype: 'displayfield',flex: 1,value: 'rowNum__' + i
},{
xtype: 'hidden',cls: 'hidden-ID',value: i
},{
xtype: 'panel',flex: 0.3,html: '<div>click to send</div>',somePropertyName: i,listeners: {
'render': function (panel) {
panel.body.on('click',function () {
console.log(panel.somePropertyName);
});
}
}
}]
}));
}
eleCatDisplay2.doLayout();
});
,
解决方案(在显示字段上我添加了cls:“ display-cat-name”):
var cNM = Ext.getCmp(this.up('.hbox-parent').select('.display-cat-name').elements[0].id).value;
var catId = this.up('.hbox-parent').select('.hidden-ID').elements[0].value;