我正在使用ExtJs,我有一个表格如下。
var tourPlanForm = new Ext.form.FormPanel({
bodyStyle : {
"background-color" : "#000000",
"padding" : "10px"
},
layout : {
type : 'vbox',
// pack:'end'
align : 'center'
},
defaults : {
labelWidth : 140,
padding : '10 0 0 0'
},
items : [ {
xtype : 'compositefield',
labelWidth : 120,
items : [ {
xtype : 'label',
text : 'SystemDate',
forId : 'myFieldId',
style : 'marginleft:10px'
}, ]
}
],
buttons : [ {
text : 'New',
handler : function() {
var sysDate = new Date();
//alert(sysDate);
var lbTourCode = Ext.ComponentQuery.query('form > compositefield > label')[1];
console.log(lbTourCode);
lbTourCode.setText(sysDate);
}
}]
});
我的表单有一个新按钮和一个标签。当用户单击新按钮时,我需要将系统日期设置为标签文本。我用过
var lbTourCode = Ext.ComponentQuery.query('form > compositefield > label')[1];
console.log(lbTourCode);
lbTourCode.setText(sysDate);
但它不起作用。 Firebug控制台说
Ext.ComponentQuery.query('form > compositefield > label')[1]; not define
如果有人愿意解释这有什么问题以及如何克服这个问题,我将不胜感激。
谢谢
答案 0 :(得分:2)
数组基于零,可能是您的项目位于:
Ext.ComponentQuery.query('form > compositefield > label')[0]
此外,向组件添加itemId
可以使以后查询更容易(在项目数组中还有一个额外的逗号,这可能会导致某些浏览器出现问题):
items : [ {
xtype : 'label',
text : 'SystemDate',
forId : 'myFieldId',
style : 'marginleft:10px',
itemId:'myLabelField'
} ]
稍后通过itemId
查询:
var field = Ext.ComponentQuery.query('#myLabelField')[0];