2012-02-16 2 views
0

Так скажем, в Сенча Touch, я создал список вложенной как такSencha Touch - как отображать обновленный контент в вложенном списке?

var NestedList = createList(jsonDataObject,'leftNavigation','list','bookmark-icon'); 
function createList(data , id , cls, iconCls) 
{ 
    var store = new Ext.data.TreeStore({ 
     model: 'ListItem', 
     root: data, 
     proxy: { 
      type: 'ajax', 
      reader: { 
      type: 'tree', 
      root: 'items' 
      } 
     } 
    }); 

    var leftNav = new Ext.NestedList({ 
     // cardSwitchAnimation: false, 
     dock: 'left', 
     id: id, 
     cls: 'card '+cls, 
     useTitleAsBackText: true, 
     title: data.text , 
     iconCls: iconCls, 
     displayField: 'text', 
     width: '350', 
     store: store}); 
} 

Через некоторое время, содержимое jsonDataObject изменится (либо периодически через setInterval() вызов или из-за взаимодействия с пользователем). Мне также может потребоваться представить совершенно новый jsonDataObject в магазин NestedList. Так что мои вопросы:

a) Как мне получить NestedList для обновления и отображения нового пользовательского интерфейса с новыми данными?

b) Является ли моя реализация createList() наиболее подходящим способом создания Nestlisted? Или есть лучший способ для моих целей?

ответ

0

Поскольку никто не ответил на мой вопрос вовремя, я использовал работу.

Я сохранил код как есть в вопросе. Вложенный список используется панелью контейнера. Так что я сделал, это удалить старый вложенный список из панели контейнера, уничтожить его, а затем создать новый вложенный список и вставить его обратно в панель контейнера. В качестве примера:

// my old nestedlist was item 1 of the container, where container is Ext.TabPanel() 
// you can re-use this strategy with any component in the container.items.items array 
var oldnestedlist = container.items.items[1]; 
container.remove(oldnestedlist); 
oldnestedlist.destroy(); 

// create the new nestedlist 
var NestedList = createList(jsonDataObject,'leftNavigation','list','bookmark-icon'); 
container.insert(1,NestedList); 
// After you insert the NestedList, the screen hasn't been redrawn yet, 
// so i force the user to go back to screen if container.items.items[0] via 
// setActiveItem(0). You can choose the screen in any other 
// container.items.items array 
container.setActiveItem(0); 

// Next time someone presses the tab for containers.items.items[1], the screen will automatically redraw