在 secha 触摸 MVC 模式中从控制器调用视图

call a view from controller in secha touch MVC pattern

本文关键字:控制器 调用 视图 模式 secha 触摸 MVC      更新时间:2023-09-26

我想渲染一个view,当我单击另一个view上的按钮时创建。

这是我的控制器代码,我正在遵循MVC architecture

Ext.define('demo.controller.LoginController' , {
    extend: 'Ext.app.Controller',
    config: { 
        refs:{
                loginAction: 'button[action=login]'
        },
        control:{
                loginAction: {
                    tap:'loginProcess'
                }
        }

    },
    loginProcess:function(button,e,opts){

         // Render View here

    }

});

我已经搜索过,我遇到了getMainView().push()Ext.ViewPoart.add()但它不起作用。根据 MVC 模式,应该如何从控制器调用此视图?

编辑

profilecontainer代码

Ext.define('demo.view.ProfileContainer',{

            extend:'Ext.Panel',
            xtype:'profilecontainer',
             requires: [
        'Ext.Label'
    ],
             config: {
                items:[{
                            xtype:'label',
                            html:'hi'
                }]
            }

});

如果您正确设置了它们,您尝试过的两种方法都应该有效。

首先,如果getMainView().push(newView)Ext.navigation.ViewmainView将起作用。 请参阅此方法的文档:http://docs.sencha.com/touch/2.2.1/#!/api/Ext.navigation.View-method-push

你也可以使用 Ext.Viewport.setActiveItem(newView) ,假设你没有错别字(你的帖子说ViewPoart(。 (Ext.Viewport.add会将面板添加到视口,但不会将其设置为布局中的活动卡片(

如果这些都不起作用,则您可能没有正确配置控制器。 如果是这种情况,请确保正在调用loginProcess方法。 如果不是,则您的选择器 button[action=login] 不正确。