在Controller的init函数中获取View组件

Get View component in init function of Controller

本文关键字:获取 View 组件 函数 Controller init      更新时间:2023-09-26

在sencha touch 2.2.1中,是否可以在控制器的init函数中获取视图组件?

如果我正在尝试下面的代码,我会得到所有3个日志的未定义:

refs: {
    mainPanel: '#HomeView'
}
init: function(){
    console.warn(this.getMainPanel());
    console.warn(this.mainPanel);
    console.warn(Ext.ComponentQuery.query('#getOffersButtonHomeView')[0]);
}

视图代码:

    Ext.define('DeviceAPIFramework.view.HomeView', {
    extend: 'Ext.Panel',
    xtype: 'HomeView',
    id: 'HomeView',
    requires: [
        'Ext.Button',
        'Ext.dataview.List'
    ],
    config: {
        items: [{
            xtype: 'panel',
            layout: 'hbox',
            margin: '5 0 15 15',
            items: [{
                xtype: 'button',
                text: 'Get Offers',
                itemId: 'getOffersButtonHomeView',
                id: 'getOffersButtonHomeView',
                ui: 'confirm',
                width: 150
            }]
        }, {
        .....

这个案子有什么解决办法吗?

对于导航和显示面板,我使用NavigationView(用于显示带有xtype的视图的推送方法),我将其添加到Ext.ViewPort.

我终于发现控制器中有一个启动函数,它在视图初始化后被调用。

launch: function() {
    Ext.ComponentQuery.query('#getOffersButtonHomeView')[0].someMethod(someParameter);
},