在sencha touch MVC模式中从控制器调用视图

时间:2013-07-25 16:56:04

标签: javascript sencha-touch sencha-touch-2.1

我希望在点击另一个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'
                }]

            }


});

1 个答案:

答案 0 :(得分:1)

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

首先,如果getMainView().push(newView)mainViewExt.navigation.View将有效。请在此处查看此方法的文档: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]不正确。