Sencha不能在控制器中触发我的标签显示事件

sencha can't fire my label show event in controller

本文关键字:我的 标签 显示 事件 不能 控制器 Sencha      更新时间:2023-09-26

我遇到了一个问题,因为我不能在我的视图中启动我的控制器函数,因为它只是一个警报演示。

我的控制器:

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'
            }
        ]
    }
});

Try

{
    xtype: 'label',
    itemId: 'datalabel',
    //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: {
            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');
    }
});