从控制器到达主视口

时间:2016-07-24 16:28:46

标签: javascript extjs extjs5

我在应用程序的启动功能中创建了一个视口。现在在下面的控制器中,我首先破坏了一些窗口,然后我想将我的自定义类添加到主视口。这是代码

Ext.define('MyApp.view.login.LoginController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.login',

    onLoginClick: function() {


        localStorage.setItem("TutorialLoggedIn", true);


        // Now, we are free to remove the login window.
        this.getView().destroy(); // this is Window class

         // ==========================================
         // *** Here I want to add main view to main viewport. How?
        Ext.create("MyApp.view.main.Main", {renderTo: /*How to get handle to main viewport?*/});

    }
});

我想将Main视图添加到视口,但我无法引用主视口

我怎样才能做到这一点?

这是我在发布中创建视口的方式:

 launch: function() { 

      //
      // Create viewport for the application
      //
      var myViewPort =  Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            html: 'Main application',
            xtype:'viewport'
      });

3 个答案:

答案 0 :(得分:0)

这是我目前的解决方案。你有什么看法?

 onLoginClick: function() {


        localStorage.setItem("TutorialLoggedIn", true);


        // Now, we are free to remove the login window.
        this.getView().destroy();


        // Create main view
        var panel = Ext.create("MyApp.view.main.Main");
        globalVar.vp.add(panel);
     }

globalVar.vpapp.js中的全局对象,其中包含对视口的引用。

顺便说一下,当我创建Main并将globalVar.vp指定为renderTo参数时,它的工作原理无效?

以下是全局的创建方式

var globalVar = { vp : ""};


Ext.application({
         name: 'MyApp',
         appFolder:"app",

         // List views needed
         views: [
             'MyApp.view.login.Login',
             'MyApp.view.main.Main'
         ],

         requires: ["Ext.container.Viewport"],

         launch: function() { 

              //
              // Create viewport for the application
              //
              var myViewPort =  Ext.create('Ext.container.Viewport', {
                    layout: 'fit',
                    html: 'Main application',
              });

              // Store handle to viewport - to refer to it later from somewhere else
              globalVar.vp = myViewPort; 

答案 1 :(得分:0)

您可以为创建的视口提供id,并使用它将主视图放在视口中。

答案 2 :(得分:0)

如果您只想访问视图端口,那么在控制器中

this.getView().up('viewport')

将返回对视口的引用