Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExtJS 4.2.1-参考和控制器问题_Javascript_Html_Css_Extjs_Controller - Fatal编程技术网

Javascript ExtJS 4.2.1-参考和控制器问题

Javascript ExtJS 4.2.1-参考和控制器问题,javascript,html,css,extjs,controller,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('C

我的标签定义如下:

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.define('CapHour.controller.CapHourController'{
扩展:“Ext.app.Controller”,
门店:['CapHour'],
参考文献:[
{
参考:“标签”,
选择器:“标签”
}
],
init:function(){
var store=this.getCapHourStore();
store.on('load',功能(记录、操作、成功){
var label=Ext.ComponentQuery.query('#label')[0],
//var label=this.getCapHourLabel(),
hour=records.getAt(0.get('hour');
label.setText('CAP HOUR
'+HOUR,false); }) } })

我可以使用
Ext.ComponentQuery.query()
很好,但是当我尝试使用
this.getLabel()
时,API调用返回
未定义的
。有什么我忘了的吗?我尝试将ref中的选择器设置为“label”和“#label”,但始终得到相同的结果。

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

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

作为补充说明,您可能需要一个更好的选择器。您当前使用的选择器按xtype全局搜索,这意味着“抓取您看到的第一个带有xtype标签的对象”。

wow thx它工作了。是的,关于选择器,我最终将itemId设置为capHourLabel。在我的参考文献中,我将选择器设置为“#capHourLabel”,它成功了。:)快速提问…为什么这个.getLabel()在controllers init函数的作用域中返回undefined?因为它还没有被创建。好的,谢谢。我在文档中读到,在启动执行和创建视口之前调用init。有道理。