我的标签定义如下:
Ext.define('CapHour.view.CapHourLabel', {
extend: 'Ext.form.Label',
alias: 'widget.caphourlabel',
//itemId: 'capHourLabel',
itemId: 'label',
style: 'display:inline-block;text-align:center'
})
我的控制器定义如下:
Ext.define('CapHour.controller.CapHourController', {
extend: 'Ext.app.Controller',
stores: ['CapHour'],
refs: [
{
ref: 'label',
selector: 'label'
}
],
init: function() {
var store = this.getCapHourStore();
store.on('load', function(records, operation, success) {
var label = Ext.ComponentQuery.query('#label')[0],
//var label = this.getCapHourLabel(),
hour = records.getAt(0).get('hour');
label.setText('CAP HOUR<br/>'+hour, false);
})
}
})
我可以正常使用Ext.ComponentQuery.query()
,但当我尝试使用this.getLabel()
时,API调用会返回undefined
。有什么我忘了吗?我尝试将ref中的选择器设置为'label'和'#label'但我仍然得到相同的结果。
答案 0 :(得分:1)
您需要将商店回调的范围设置为控制器:
store.load({
scope: this,
callback: function(records) {
console.log(this.getLabel());
}
});
作为旁注,你可能想要一个更好的选择器。您在全局范围内搜索xtype的当前选择器,这意味着“抓住您看到的第一个具有xtype标签的内容”。