2013-02-22 2 views
1

인앱 콘솔을 만들고 싶습니다. 테스트 할 때 디버깅 정보를 출력 할 수있는 별도의 탭을 가질 수 있습니다.Sencha Touch 컨테이너/패널에 HTML 추가

나는 센차 터치에 새로운 해요,하지만 jQuery를에 같은 것을 할 사소한 것 : 다음

window.log = function(msg) { 
    $("#Console").append('<div>' + msg + '</div>'); 
} 

내 Main.js보기를 포함

{ 
    title: 'Console', 
    iconCls: 'info', 
    scrollable: true, 

    items: [ 
     { 
      docked: 'top', 
      xtype: 'titlebar', 
      title: 'Console' 
     }, 
     { 
      xtype: 'container', 
      id: 'console' 
     } 
    ] 
} 

이것은이다 최선을 다해 볼 수는 있지만 컨테이너의 전체 HTML을 가져 와서 재설정하기 때문에 이것은 매우 낭비적이고 그냥 나쁜 것 같습니다.

Ext.log = function (msg) { 
     var console = Ext.get('console'); 
     var html = console.getHtml(); 
     console.setHtml(html + '<div>' + msg + '</div>'); 
    }; 

더 좋은 방법이 있어야합니다 ... 맞습니까?

그냥 짧은 기간 동안 메시지를해야 할 경우 당신은 패널 각 시간을 만들 수 있으며, 컨테이너에 추가 할 수 있습니다
+0

시도에 이드없는 ​​일 '. 대신 itemId – Dinkheller

답변

2

..

var myPanel = Ext.create('Ext.Panel', { 
    html: 'This will be added to a Container' 
}); 

Ext.getCmp('console').add([myPanel]); 
+0

을 사용하면이 방법이 작동하는 것처럼 보이지만 다른 용도의 경우 나중에 항목을 삭제할 수 있는지 확인하십시오. – Dinkheller

+0

로그 메시지가있는 패널을 삭제 하시겠습니까? 아니면 콘솔에 대한 참조를 파괴합니까? Ext.fly ('console')를 사용하는 것이 더 좋을까요? –

+0

하지 않을 때는 패널을 사용하지 마십시오. 가능한 가장 가벼운 구성 요소를 사용하십시오. 이 경우 : Ext.Component – Christoph

1

, 당신은 추가 할 수 있습니다

var actionSheet = Ext.create('Ext.ActionSheet', { 
    items: [ 
     { 
      xtype: 'container', 
      html : 'My Message', 
      style: 'color: white;' 
     } 
    ], 
    itemId: 'debugMessage', 
    listeners: { 
     show: function() { 
      Ext.defer(function(){ 
       Ext.Viewport.down('.container[itemId=debugMessage]').hide(); 
       Ext.defer(function(){ 
        Ext.Viewport.down('.container[itemId=debugMessage]').destroy(); 
       },250); 
      },1400); 
     } 
    } 
}); 
Ext.Viewport.add(actionSheet); 
actionSheet.show();