ExtJS 4.2.1 - refs和controller的问题

时间:2014-01-08 00:36:05

标签: javascript html css extjs controller

我的标签定义如下:

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'但我仍然得到相同的结果。

1 个答案:

答案 0 :(得分:1)

您需要将商店回调的范围设置为控制器:

store.load({
    scope: this,
    callback: function(records) {
        console.log(this.getLabel());
    }
});

作为旁注,你可能想要一个更好的选择器。您在全局范围内搜索xtype的当前选择器,这意味着“抓住您看到的第一个具有xtype标签的内容”。