sencha 无法在控制器中触发我的标签显示事件

sencha can't fire my label show event in controller

我遇到了一个问题,因为我无法在我的视图中触发我的控制器功能,因为它只是一个警报演示。

我的控制器:

Ext.define('ylp2p.controller.viewdata',{
    extend: 'Ext.app.Controller',
    config: {
        control: {
            viewlabel: {
                show: 'viewlabelFn'
            }
        },        
        refs: {
            viewlabel: 'label[id=datalabel]',
        }
    },    
    viewlabelFn: function(){
        alert('painted');
    }
});

我的看法:

Ext.define('ylp2p.view.Main', {
    extend: 'Ext.tab.Panel',
    xtype: 'main',
    requires: [
        'Ext.TitleBar',
        'Ext.carousel.Carousel',
        'ylp2p.store.datainterests',
    ],
    config: {
        fullscreen: true,
        tabBarPosition: 'bottom',
        scrollable: 'vertical',
        items: [
            {
                title: '首页',
                iconCls: 'home',
                styleHtmlContent: true,
                scrollable: true,
                layout: 'card',
                items:  [
                {
                    docked: 'top',
                    xtype: 'titlebar',
                    title: 'ylp2p'
                },
                {
                    xtype: 'container',
                    layout: 'vbox',
                    items:[
                        {
                            xtype: 'carousel',
                            height: 300,
                            items: [
                            {
                                html: 'html1',
                                style: 'background-color:#5E99CC'
                            },
                            {
                                html: 'html2',
                                style: 'background-color: #759E60'
                            },
                            {
                                html: 'html3',
                            }
                            ]
                        },//end carousel
                        {
                            xtype: 'label',
                            id: 'datalabel',
                            //tpl:  '{store.get("data")},{store.get("earn")}',
                            store: 'interestsdata',
                            //tpl: ['总投资:{data},盈利:{earn}'],
                            html: 'hello',
                            flex: 1,
                        }//end label
                    ]
                }
                ]//end items
            },
            {
                title: '融资',
                iconCls: 'locate',
                //xtype: 'makemoney'
            },
            {
                title: '理财',
                iconCls: 'action',
                //xtype: 'money'
            },
            {
                title: '账户',
                iconCls: 'user',
                //xtype: 'user'
            },
            {
                title: '更多',
                iconCls: 'more',
                //xtype: 'more'
            }
        ]
    }
});

尝试

{
    xtype: 'label',
    itemId: 'datalabel',
    //tpl:  '{store.get("data")},{store.get("earn")}',
    store: 'interestsdata',
    //tpl: ['总投资:{data},盈利:{earn}'],
    html: 'hello',
    flex: 1,
}

和select这样

Ext.define('ylp2p.controller.viewdata',{
    extend: 'Ext.app.Controller',
    config: {
        control: {
            viewlabel: {
                show: 'viewlabelFn'
            }
        },        
        refs: {
            viewlabel: '#datalabel',
        }
    },    
    viewlabelFn: function(){
        alert('painted');
    },

    launch: function() {
        this.getViewlabel().show();
    }
});

确保您已在 app.js 中添加控制器文件。试试下面的代码。

查看代码

xtype: 'label',
itemId: 'datalabel', // define item id here
//tpl:  '{store.get("data")},{store.get("earn")}',
store: 'interestsdata',
//tpl: ['总投资:{data},盈利:{earn}'],
html: 'hello',
flex: 1

控制器代码。

Ext.define('ylp2p.controller.viewdata',{
    extend: 'Ext.app.Controller',
    config: {
        control: {
            'main #datalabel'{
                show: 'viewlabelFn'
            }
        }
    },    
    viewlabelFn: function(){
        alert('painted');
    }
});