【问题标题】:list initialize in controller列表在控制器中初始化
【发布时间】:2012-07-13 09:11:18
【问题描述】:

我是 sencha 的新手,我正在尝试根据我所在的视图加载带有参数的商店;

因此,我正在尝试为我的列表捕获初始化事件并在其中加载商店。

但初始化方法似乎没有触发

我的控制器

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'

        }

    }
});

【问题讨论】:

  • Ext.ComponentQuery.query('list[id=kingsLeagueList]')[0] 在控制台返回什么?
  • 我将 id 更改为 itemId,现在 Ext.ComponentQuery.query('list[itemId=kingsLeagueList]')[0] 确实返回了列表,但它仍然没有调用我的方法
  • Ext.ComponentQuery.query(...)[0] 是在控制器中添加对组件的引用时调用的内容。尝试将列表的引用更改为 #kingsLeagueList 而不是 list[id=kingsLeagueList]。
  • 另外我想知道你为什么在它的初始化函数中设置控制器的控件?有什么理由吗?
  • 我在一些教程中看到了:D

标签: javascript extjs sencha-touch-2


【解决方案1】:

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

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

如果我必须创建两个相同的组件,我从不使用 ids

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多