Ext.list.Tree 商店和模板

Ext.list.Tree store and templates

例如,与 Touch 2.4 Ext.List 相比,Ext JS 6 中的列表不再存在。所以我现在尝试做的是创建一个 treestore 并将其绑定到 Ext.list.Tree。这似乎工作正常,但我不知道如何在列表项上设置模板。我有以下代码:

我的模型是这样的:

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'name',  type: 'string'},
        {name: 'phoneNumber', type: 'string'}
    ]
});

接下来我有一些数据:

var data = {
    users: [
        {
            name: 'Ed Spencer',
            phoneNumber: '555 1234'
        },
        {
            name: 'Abe Elias',
            phoneNumber: '666 1234'
        }
    ]
};

接下来是店铺的定义:

var store = Ext.create('Ext.data.TreeStore', {
    autoLoad: true,
    model: 'User',
    data : data,
    expanded: true,
    defaultRootProperty: 'users',
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            rootProperty: 'users'
        }
    }
});

最后但同样重要的是,我将商店绑定到我的树列表:

var list = Ext.create('Ext.list.Tree', {
    title: 'simple list',
    store: store,
    width: '200px',
    height: '400px',
    renderTo: Ext.getBody(),
    itemTpl: '{name}'
});

通过查看文档,我似乎需要指定一个文本 属性 然后可能会自动显示在列表中,但我不想只显示文本,我想进行组合本例中的姓名和电话号码。

我现在不知道如何继续,因为我不知道如何在 list/tree 中显示我的数据。希望有人能提供帮助。我还有一个 Sencha Fiddle 可用在这里:https://fiddle.sencha.com/#fiddle/1el1

解决方案是不使用 Ext.list.Tree,而是使用 Ext.List/Ext.dataview.List。我正在查看经典文档,而我应该查看现代文档。

我现在有以下店铺:

var store = Ext.create('Ext.data.Store', {
    autoLoad: true,
    model: 'User',
    data : data,
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            rootProperty: 'users'
        }
    }
});

并呈现以下列表:

// don't render the list, but add it to the viewport instead
Ext.Viewport.add(Ext.create('Ext.List', {
    title: 'simple list',
        store: store,
        itemTpl: '{name}, {phoneNumber}'
}));

模型和数据保持不变。

我还更新了 fiddle 所以它会正确显示:https://fiddle.sencha.com/#fiddle/1el1