为嵌套列表设置LocalStorage存储

时间:2015-09-05 13:42:36

标签: javascript extjs sencha-touch-2

我已经创建了一个localstorage商店,并按照本教程在其中存储了演示值:

http://sureshdotariya.blogspot.com/2013/03/understanding-local-storage-proxy-in.html

一切正常,我已经在chrome中查看了资源中的商店数据,它就在那里,当我加载页面时,它加载正常,没有错误,但它没有显示数据,这里&#39 ;我的观点代码:

Ext.define('MyTest.view.SearchPanel', {
    extend: 'Ext.Panel',
    xtype: 'searchpanel',
    config: {
        layout: 'fit',
        items: [
        {
            xtype: 'nestedlist',
            title: 'Search Results',
            displayField: 'Name',
            store: {     
                storeId: 'UserStore',
                fields: ['Name']
            },
        }]
    }
});

我在这里缺少什么?我可以使用本地存储库作为嵌套列表的存储吗?如果是,那么为什么它显示"没有找到任何项目",我已经在app.js中添加了商店,我尝试在此视图中要求它,但这不起作用。

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

Ext.dataview.NestedList需要Ext.data.TreeStore而不是Ext.data.Store(在您提供的示例网址中)。

Ext.data.TreeStore中需要rootdefaultRootProperty配置,项目中需要leaf属性。

当然,您可以在Ext.data.proxy.LocalStorage中将Ext.data.TreeStore设置为代理,请尝试使用以下代码:

Ext.define('ListApp.model.User', {
     extend: 'Ext.data.Model',
     config: {
         fields: [{
             name: 'text',
             type: 'string'
         }]
     }
 });
Ext.define('App.store.User', {
    config: {
        model: 'ListApp.model.User',
        defaultRootProperty: 'items',
        root: data
        proxy: {
            type: 'localstorage',
            id: 'UserInfo'
       }
    }
});