2012-11-27 1 views
0

목록 (A)이있는 탐색보기가 항목으로 있습니다. 목록 (A)을 클릭하면 새보기 (B)가 표시됩니다. 새보기 (B)가 다시 한 번 클릭하면보기 (C)로 변경하는 데 하나의 단추가 있습니다.Sencha 2 내비게이션보기 이전 항목을 대체하지 않고 새 인스턴스 만들기

문제는 입니다.보기 (C)는보기 (B)와 같습니다.

새보기를 만들고 밀어 넣을 수는 있지만 새 데이터로 채울 수는 없습니다. 보기 (B)로 돌아 오면보기 데이터 (C)가 나타납니다.

이 시나리오를 해결하는 방법.

코드 : 내가 컨트롤러에서보기를 변경하고보기 (B)의 목록을 클릭에 새로운 데이터로 다시 같은보기 (B)를 보여주고 싶어하고



/** 
* navigationview with list(A) 
*/ 
Ext.define('activity', { 
    extend: 'Ext.navigation.View', 
    config: { 
     items:[ 
      { 
       grouped:true, 
       pinHeaders: true, 
       xtype:'list', 
       store:{ 
        xclass:'ActivityList' 
       }, 
       itemTpl:'{title}', 
       emptyText: 'nothing found' 
      } 
     ] 
    } 
}); 

/** 
* child view(B) to be appeared on clicking any item in list(A). 
*/ 
Ext.define('TaskDetails', { 
    extend: 'Ext.Panel', 

    config: { 
     title: 'Task', 
     layout: { 
      type: 'fit' 
     }, 
     items: [ 
      { 
       xtype: 'toolbar', 
       docked: 'top', 
       height: '40px', 
       items: [ 
        { xtype: 'spacer'}, 
        { 
         xtype:  'segmentedbutton', 
         height:  '30px', 
         items:  [ 
          { 
           text: 'Task Details', 
           pressed: true 
          }, 
          { 
           text:  'Child Tasks', 
           badgeText: '0' 
          } 
         ] 
        }, 
        { xtype: 'spacer'} 
       ] 
      }, 
      { 
       xtype: 'container', 
       items: [ 
        { 
         xtype:'dataview', 
         store:  { 
          xclass: 'TaskDetails' 
         }, 
         itemTpl: 'some thing....' 
        }, 
        { 
         xtype:'list', 
         store:{ 
          xclass:'ChildTask' 
         }, 
         itemTpl: 'some template...' 
        } 
       ] 
      } 
     ] 
    } 

}); 

.

+0

코드를 보는 데 도움이됩니다. 특히 뷰의 데이터를 채우는 방법 (C) –

+0

뷰 (C)가 없습니다. 새로운 데이터로보기 (B)를 원합니다. 또한 새로운 수업을 다시 쓰고 싶지 않고 이전 데이터를 유지하려고합니다. –

+0

보기의 코드는별로 도움이되지 않습니다. 컨트롤러의 코드를 게시 할 수 있습니까? –

답변

0

이것은 탐색 할 수없는 탐색 기능의 기능입니다. setActiveItem을 사용하여 뷰를 푸시하는 대신 ... 동일한 문제가 발생하여 setActiveItem으로 변경되어 탐색 뷰보다 뷰를 더 잘 제어 할 수 있습니다.

0

뷰 (2)를 처음로드하면 ref는 1대로. Refs는 하나의 구성 요소가 반환 된 경우에만 작동합니다. 다시 심판이 청취자 화재 전혀 의미하고 데이터가 새로운 인스턴스에로드되지 않습니다 2.

의 배열을 반환 (2) 뷰를로드 한 후

.

컨트롤러가 처음으로보기를 볼 때 참조가 dom 요소에 바인딩됩니다. 우리는 그것을 바꿀 수 없다. 이것은 우리가 직접 심판을 사용할 수 없다는 것을 의미합니다. 우리는 Ext.ComponentQuery.query가 refs에 의존한다는 것을 알고 있습니다. 이를 사용하여 런타임에 심판을 시뮬레이션 할 수 있습니다. 새로운 뷰에 대한 데이터를로드하기 위해 컨트롤러의 initialize() 함수에 런타임 데이터 뷰 ref를 추가했습니다. 이것은보기가 만들어 질 때마다 실행되는 것처럼 보이므로 작동합니다.

관련 문제