2014-05-09 9 views
0

Demo
ExtJs를 사용하여 treepanel을 만듭니다.
스토어 :ExtJs의 beforeitemexpand 이벤트에서 트리 데이터를 수정 한 후에 최신 트리를 표시하지 않으시겠습니까?

var store = Ext.create('Ext.data.TreeStore', { 
    root: { 
     text: 'Root Node', 
     expanded: false, 
     children: [{ 
      text: 'Child 0', 
      leaf: true 
     }, { 
      text: 'Child 1', 
      leaf: true 
     }, { 
      text: 'Child 2', 
      leaf: true 
     }] 
    } 
}); 

JS :

Ext.onReady(function() { 
    Ext.create('Ext.window.Window', { 
     title: 'Our first tree', 
     layout: 'fit', 
     autoShow: true, 
     height: 180, 
     width: 220, 
     items: { 
      xtype: 'treepanel', 
      border: false, 
      store: store, 
      rootVisible: true, 
      listeners: { 
       beforeitemexpand: function (p, eOpts){ 
        alert("current node:" + p.data.text); 
        var childNodes = p.childNodes; 
        $.each(childNodes,function(no, child){ 
         alert(child.data.text); 
         child.data.text = no; 
         alert(child.data.text); 
        }); 
       } 
      } 
     } 

    }); 
}); 

질문 : 노드를 확장하면
,이 데이터를 수정합니다 beforeitemexpand 이벤트를 트리거합니다 그 자식 노드의 그러나 확장 된 자식 노드는 수정 된 텍스트가 아니라 원본 텍스트를 표시합니다.

데모의 경우 처음으로 Root Node을 확장 한 후에 실제로 트리 텍스트가 변경되었지만 창에 표시되지는 않습니다. 그런 다음 Root Node을 다시 확장하면 수정 된 텍스트가 표시됩니다.

어떻게하면 최신 데이터를 표시 할 수 있습니까? 어쩌면이 상황에 대한 전치사가 아닌 또 다른 사건이 있습니다. 그러나 오랜 시간 동안 찾은 후에는 찾지 못합니다.

도움 주셔서 감사합니다.

답변

1

당신은 개인 재산 data에 직접 액세스하고 있습니다. 다음과 같이하십시오.

child.set('text',no); 
child.commit(); 
+0

감사합니다. –