2013-07-25 1 views
0

view의 버튼을 클릭하면 생성되는 view을 렌더링하고 싶습니다.secha touch의 컨트롤러에서 뷰 호출 MVC 패턴

여기 내 컨트롤러 코드, 그리고 내가 검색 한 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

모두의

편집

코드입니다.

mainViewExt.navigation.View 인 경우 먼저 getMainView().push(newView)이 작동합니다. 여기에이 방법에 대한 문서를 참조하십시오 : 또한 Ext.Viewport.setActiveItem(newView)을 사용할 수 있습니다 http://docs.sencha.com/touch/2.2.1/#!/api/Ext.navigation.View-method-push

, 더 오타가없는 가정 (귀하의 게시물이 ViewPoart을 말한다). (Ext.Viewport.add은 뷰포트에 패널을 추가하지만 레이아웃에서 활성 카드로 설정하지 않습니다.)

이들 중 어느 것도 작동하지 않는 경우 컨트롤러를 올바르게 구성하지 않은 것일 수 있습니다. 이 경우 loginProcess 메서드가 호출되고 있는지 확인하십시오. 그렇지 않으면 선택자 button[action=login]이 올바르지 않습니다.

+0

필자는'Ext.Viewport.add ({xtype : 'profilecontainer'});''profilecontainer'는 내'View'이고'app.js'에 등록하고'xtype'는로 정의합니다. 'profilecontainer'하지만 여전히 기존의 뷰를 호출 할 수 없습니다. 로그인 버튼 이벤트가 실행되는 방식으로 확인했습니다. – Hunt

+0

이 경우,'profilecontainer'에 대한 코드를 게시해야합니다. 콘솔에 오류가 표시됩니까? – kevhender

+0

오류 없음, 내가 원하는 것은 목록이있는 새로운 뷰를 완전히로드하고,'profilecontainer'에 대한 나의 편집을 참조하십시오. – Hunt