ext.js - 无法将XML数据应用于模板

时间:2011-06-20 19:16:57

标签: xml model extjs

我正在使用ext.js从XML文件中获取数据并循环显示结果以在模板中显示它们,但它不起作用。我可以成功遍历结果并将它们记录到控制台,但是当我将它们传递给模板时,不会显示任何内容。这是我的代码:

Ext.regModel('Work', {
    fields: ['title', 'thumb', 'video']
});

var workStore = new Ext.data.Store({
    model: 'Work',
    proxy: {
        type: 'ajax',
        //url : 'http://superfad.com/work/work_xml',
        url : 'lib/xml/work_xml.xml',
        reader: {
            type: 'xml',
            record: 'project'
        }
    }
});

t_work = new Ext.Component({
    cls:'t_work', title:'Work',
    title:'Work',
    scroll: 'vertical',
    tpl: new Ext.XTemplate(
        '<tpl for=".">',
            '<div class="work">',
                    '<h3 class="work_title">{title}</h3>', //this doesn't work
                    '<div class="work_thumb">',
                        '<img src="{thumb}" alt="{title}"/>', //this doesn't work
                    '</div>',
            '</div>',
        '</tpl>'
    )
});

function loadWork(){
    workStore.load({
        callback: function(data) {
            var projects = data;
            t_work.update(projects)
            for (var i = 0, iln = projects.length; i < iln; i++){
                console.log(projects[i].get('title')) //this works
            }
        }
    });
}

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你可以分享你的xml吗?

确保您的模型字段具有与xml文件中完全相同的名称,包括大写字母。可能是你的模型没有正确设置,我自己也有这个问题。 还要确保您在xml文件中没有根节点。如果您有根节点,请使用以下命令(用节点名替换&#39; rootnode&#39;):

var workStore = new Ext.data.Store({
    model: 'Work',
    proxy: {
        type: 'ajax',
        //url : 'http://superfad.com/work/work_xml',
        url : 'lib/xml/work_xml.xml',
        reader: {
            type: 'xml',
            record: 'project',
            root: 'rootnode'
        }
    }
});