Sencha Touch 中的 XMLReader 问题

发布于 2024-11-01 06:43:11 字数 1981 浏览 0 评论 0原文

亲爱的大家,我有 XML 数据(users.xml,来自 sencha 文档示例),

<?xml version="1.0" encoding="UTF-8"?>
<user>
    <id>1</id>
    <name>Ed Spencer</name>
    <email>[email protected]</email>
</user>
<user>
    <id>2</id>
    <name>Abe Elias</name>
    <email>[email protected]</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>

仅供参考,这三个文件存储在同一个文件夹中。当我在谷歌浏览器中测试时,我没有得到任何数据。我的代码做错了什么吗?有人能指出我哪个代码是错误的吗?我已经在这个网站上搜索了类似的主题,但我仍然没有得到明确的答案。谢谢

Dear All, I Have Datas in XML (users.xml, it's from sencha docs example)

<?xml version="1.0" encoding="UTF-8"?>
<user>
    <id>1</id>
    <name>Ed Spencer</name>
    <email>[email protected]</email>
</user>
<user>
    <id>2</id>
    <name>Abe Elias</name>
    <email>[email protected]</email>
</user>

I want to load those datas in sencha list. It's my js code (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();        
}
});

and it's my html file (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, thos three files are stored in the same folder. When i test in google chrome, i got no datas. did i do something wrong with my code? could somebody point me which code is wrong? i have searced the similar topic in this site but i still get no clear answer. thx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小嗲 2024-11-08 06:43:11

我自己是 Sencha Touch 的新手。但我已经启动并运行了一个类似的解决方案(尽管我的脚本使用 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
});

I'm new to Sencha Touch myself. But I have got a similar solution up and running (although my script uses JSON instead of XML).

As I browse through your code it looks like you never initiate a load of the store. The store nevers 'starts'.

You can force a load of the store by using (at roughly the same line as .show(); in your code).

store.load();

Or you could add an autoload variable to the store itself;

var store = new Ext.data.Store({
    model: 'User',
    proxy: {
        type: 'ajax',
        url : 'users.xml',
        reader: {
            type: 'xml',
            record: 'user'
        }
    }, 
    autoLoad: true
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文