在sencha touch 2中更新嵌套列表

时间:2012-03-11 13:08:52

标签: sencha-touch-2

我无法使用sencha touch 2重绘嵌套列表。我的代码如下所示;

  var data = {items:[{text:'hello', leaf:true}]};
    Ext.application({
       name:'main',
       launch:function(){

            Ext.define('ListItem', {
                extend: 'Ext.data.Model',
                config: {
                    fields: ['text']
                }
            });

            var treeStore = Ext.create('Ext.data.TreeStore', {
                id: 'mystore',
                model: 'ListItem',
                defaultRootProperty: 'items',
                root: data});

            Ext.create('Ext.NestedList', {
                id:'mylist',
                fullscreen: true,
                store: treeStore
            });

        } // end launch:function()
     }); // end Ext.application

在运行期间,我修改数据变量,如data.items[0].text = 'bye'。如何让嵌套列表刷新并显示bye?我尝试了以下但没有一个工作:

var mystore = Ext.data.StoreManager.lookup('mystore');
mystore.setRoot(data);
Ext.getCmp('mylist').refresh(); // refresh, update, dolayout, repaint etc... does not exist.
Ext.getCmp('mylist').bindstore(mystore); // bindstore is deprecated

2 个答案:

答案 0 :(得分:2)

您应该通过记录/存储实例更改数据,然后Ext.NestedList将自动更新

var record = treeStore.getAt(0);
record.set('text', 'bye');

答案 1 :(得分:1)

使用getById()和getAt()来处理商店中的数据,这将返回实现NodeInterface的Models。通过appendChild添加数据,其余部分从那里自我解释。可以在数据中覆盖id值,以便更轻松地导航树。

getStore().getById('myFirstLevelId').getById('mySecondLevelId').getById('myThirdLevelId')

http://docs.sencha.com/touch/2-0/#!/api/Ext.data.NodeInterface