EXTJS4.1 XTemplate不是从Store中绘制的

时间:2012-05-30 17:22:26

标签: extjs extjs4 extjs-mvc

我正在尝试使用加载了JSON数据的商店为我的应用创建侧边栏导航。 XTemplate。有基本类别&子类别。但是,类别是绘图,它不是在侧边栏中创建/渲染子类别。看看文档,我的几乎与他们的“孩子”例子完全相同。我做错了什么?

Doc:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.XTemplate

模型

Ext.define('APP.model.SideBar', {
extend: 'Ext.data.Model',

fields: [
    {name: 'group',     type: 'string'},
    {name: 'tools',     type: 'string', mapping: 'tools'}        
],
proxy: {
    type: 'ajax',
    url : '/js/res/sidebar.json',
    reader: {
         type: 'json',
         root: 'items'
     }
}
});

sidebar.json

{"items": [
{
    "group": "Category1",
    "tools": [
        {"name": "Sub A1"}
    ]
},{
    "group": "Category2",
    "tools": [
       {"name": "Sub B2"},
       {"name": "Sub B3"}
    ]
}]}

查看它绘制{group}但不绘制{tools.name}

Ext.define('APP.view.SideBar', {
alias: 'widget.appsidebar',
extend: 'Ext.view.View',
id: 'sidebar',
width: 180,
border: false,
cls: 'sidebar-list',

selModel: {
    deselectOnContainerClick: false
},

store: 'SideBar',
itemSelector: '.apptool',
tpl: [
    '<tpl for=".">',
            '<div class="sidebar-title">{group}</div>',
            '<tpl for="tools">',
                '<div class="apptool">{name}</div>',
            '</tpl>',
    '</tpl>'
]
});

1 个答案:

答案 0 :(得分:3)

我认为问题不在xtemplate中,而是在视野中。 view.itemSelector的{​​{3}}说:

  

这是必需的设置。一个简单的CSS选择器(例如div.some-class   或span:first-child)将用于确定此节点   DataView将与之合作。 itemSelector用于映射DOM   节点到记录。 因此,应该只有一个根级别元素   与每条记录的选择器匹配

查看Docs有关在视图中显示分层数据的问题。