Проблема XMLReader в приложении Sencha Touch - PullRequest
0 голосов
/ 15 апреля 2011

Уважаемые все, у меня есть данные в XML (users.xml, это из примера sencha docs)

<?xml version="1.0" encoding="UTF-8"?>
<user>
    <id>1</id>
    <name>Ed Spencer</name>
    <email>ed@sencha.com</email>
</user>
<user>
    <id>2</id>
    <name>Abe Elias</name>
    <email>abe@sencha.com</email>
</user>

Я хочу загрузить эти данные в список sencha.Это мой js-код (user.js)

Ext.setup({
onReady: function() {
    Ext.regModel('User', {
        fields: ['id', 'name', 'email']
    });

    var store = new Ext.data.Store({
        model: 'User',
        proxy: {
            type: 'ajax',
            url : 'users.xml',
            reader: {
                type: 'xml',
                record: 'user'
            }
        }
    });

    var list = new Ext.List({
        fullscreen: true,

        itemTpl : '{name} {email}',
        grouped : true,
        indexBar: true,         
        store: store
    });
    list.show();        
}
});

и мой html-файл (user.html)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <link rel="stylesheet" href="senchalib/resources/css/sencha-touch.css" type="text/css">

    <script type="text/javascript" src="senchalib/sencha-touch.js"></script>

    <script type="text/javascript" src="user.js"></script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

</body>
</html>

FYI, три файла хранятся в одной папке.Когда я тестирую в Google Chrome, у меня нет данных.я сделал что-то не так с моим кодом?Может ли кто-нибудь указать мне, какой код неправильный?Я искал похожую тему на этом сайте, но до сих пор не получил четкого ответа.ТНХ

1 Ответ

0 голосов
/ 15 апреля 2011

Я новичок в Сенча Прикоснись к себе.Но у меня есть подобное решение, и оно запущено (хотя мой скрипт использует JSON вместо XML).

Когда я просматриваю ваш код, похоже, что вы никогда не запускаете загрузку магазина.Неверные значения магазина «запускаются».

Вы можете принудительно загрузить магазин, используя (примерно в той же строке, что и .show (); в вашем коде).

store.load();

ИлиВы можете добавить переменную автозагрузки в само хранилище;

var store = new Ext.data.Store({
    model: 'User',
    proxy: {
        type: 'ajax',
        url : 'users.xml',
        reader: {
            type: 'xml',
            record: 'user'
        }
    }, 
    autoLoad: true
});
...