-1

你好,

我正在与 sencha 建筑师合作,在一个 touch 2.4 项目中。我在处理嵌套列表和树存储时遇到问题:

  • 这是我的商店:

    Ext.define('App.store.Tree', {
    extend: 'Ext.data.TreeStore',
    
    requires: [
    'App.model.Servicios',
    'Ext.data.proxy.Ajax',
    'Ext.data.reader.Json',
    'Ext.data.proxy.LocalStorage'
    ],
    
    
    config: {
        model: 'App.model.Servicios',
        storeId: 'Tree',
        defaultRootProperty: 'items',
        proxy: {
            type: 'ajax',
            type: 'localstorage',
            reader: {
                type: 'json'
            }
        }
    }
    

    });

(我已经尝试过代理和阅读器的每种组合,错误是一样的。)

  • 现在这是我的模型:

        Ext.define('App.model.Servicios', {
        extend: 'Ext.data.Model',
    
    
        requires: [
        'Ext.data.Field'
        ],
    
    
        config: {
        fields: [
        {
        name: 'categoria',
        type: 'string'
        },
        {
        name: 'nombre',
        type: 'string'
        },
        {
        name: 'ubicacion',
        type: 'string'
        },
        {
        name: 'datos',
        type: 'string'
        }
        ]
        }
        });
    
  • 这是带有嵌套列表的容器:

        Ext.define('App.view.ServiciosContainer', {
        extend: 'Ext.Container',
        alias: 'widget.servicioscontainer',
    
    
        requires: [
        'Ext.Toolbar',
        'Ext.Button',
        'Ext.dataview.NestedList'
        ],
    
    
        config: {
        height: '100%',
        id: 'ServiciosContainer',
        width: '100%',
        layout: 'fit',
        items: [
        {
        xtype: 'toolbar',
        docked: 'top',
        items: [
        {
        xtype: 'button',
        id: 'serviciosContainerHome',
        iconCls: 'list'
        },
        {
        xtype: 'button',
        id: 'serviciosContainerBorrar',
        iconCls: 'trash'
        },
        {
        xtype: 'button',
        id: 'serviciosContainerAgregar',
        iconCls: 'add'
        }
        ]
        },
        {
        xtype: 'nestedlist',
        id: 'lstServicios',
        displayField: 'nombre',
        store: 'Tree'
        }
        ]
        },
    
    
        });
    
    • 添加按钮执行以下操作:

      var data = {
          items: [
              {
              nombre: '1',
              items: [{
                      nombre: '1.1',
                      items: [{
                              nombre: '1.1.1 last',
                              leaf: true
                      }, {
              nombre: '1.1.2 last',
              leaf: true
              }]
      }, {
              nombre: '1.2 last',
              leaf: true
              }]
      },
      {
              nombre: '2',
              items: [{
                      nombre: '2.1 last',
                      leaf: true
              }, {
              nombre: '2.2 last',
              leaf: true
              }]
      }
      ]
      };
      
      
      
      var servicios = Ext.getStore('TreeStore');
      servicios.add(data);
      
  • 这是我尝试将数据添加到商店时遇到的错误:

        TypeError: null is not an object (evaluating 'children.length')
    

请帮忙!!!!我不知道在哪里寻找错误,因为我发现的所有示例都与我的相同并且它们没有任何问题..

4

1 回答 1

0

我使用您的代码创建了一个演示,它工作正常。

我在你的演示中看到了很多不需要的代码,比如你在商店中添加了代理等。

但我清楚地看到你犯了一个小错误# See storeId its "Tree" and look at Ext.getStore('TreeStore');

我希望你明白我的意思

谢谢

于 2015-01-06T14:47:48.793 回答