列表在控制器中初始化

list initialize in controller

本文关键字:初始化 控制器 列表      更新时间:2023-09-26

我是sencha的新手,我正试图加载一个带有参数的商店,这取决于我所处的视图;

因此,我试图捕获列表的initialize事件,并在其中加载存储。

但是初始化方法似乎不会触发

我的控制器

Ext.define('FifaKings.controller.MainController', {
    extend: 'Ext.app.Controller',
    config: {
        views: ['Main','InsertMatch','Kings'],
        models: ['Match','User','Team'],
        stores: ['Match','Team','User'],
        refs: [
            {
                ref: 'insertMatchForm',
                selector: '#insertMatchForm'
            }
        ]
    },
    init: function() {
        console.log('Initialized!');
        Ext.Viewport.add(Ext.create('FifaKings.view.Main'));
        this.control({
            'button[action=insertMatchSubmit]' : {
                tap: 'insertMatchForm'
            },
            'list[id=kingsLeagueList]' : {
                initialize: 'loadKingsMatches'
            }
        });
    },
    insertMatchForm : function(){
        var form = this.getInsertMatchForm();
        form.submit({
            url:'contact.php'
        });
    },
    loadKingsMatches : function(){
        console.log('shit is working');
    }
});

我的观点:

Ext.define('FifaKings.view.Kings', {
    extend: 'Ext.navigation.View',
    requires:[
        'Ext.dataview.List'
    ],
    xtype:'kingspanel',
    config: {
        title: 'Kings',
        iconCls: 'star',
        items: {
            xtype: 'list',
            id:'kingsLeagueList',
            itemTpl: new Ext.XTemplate(
                '<table width="100%" border="0">',
                    '<tr>',
                    '<td width='"35%'">{Player1}</td>',
                    '<td width='"30%'" align='"center'">{ScorePlayer1} - {ScorePlayer2}</td>',
                    '<td width='"35%'" align='"right'">{Player2}</td>',
                    '</tr>',
                '</table>'
        ),
        store: 'Match'
        }
    }
});

要引用您的列表,您应该执行以下操作:

 this.control({
     'button[action=insertMatchSubmit]' : {
         tap: 'insertMatchForm'
     },
     'kingspanel list' : {
         initialize: 'loadKingsMatches'
     }
 });

我习惯于从不使用id,以防我必须创建两个相同的组件

希望这能帮助