1

最近、Sencha Touch 2.0 を使い始めました。XML データの読み取りに問題があります。ダウンロードに付属する基本的な「はじめに」アプリから始めましたが、正常に動作しています。つまり、セットアップが正しく行われています。単純な XML を読み取るためにいくつかの変更を加えましたが、画面にデータが表示されません。以下は私のコードです。これで私を助けてください。- ここに app.js ファイルの内容があります -

Ext.Loader.setPath({
    'Ext': 'lib/touch/src'
});

Ext.define('User', {
    extend: 'Ext.data.Model',
    config: {
        fields: ['id', 'name', 'email']
    }
});

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

Ext.application({
    name: 'Sencha',

    launch: function() {
        //The whole app UI lives in this tab panel
        Ext.Viewport.add({
            xtype: 'tabpanel',
            fullscreen: true,
            tabBarPosition: 'bottom',   
            items: [
                // This is the home page, just some simple html
                {
                    title: 'Home',
                    iconCls: 'home',
                    cls: 'home',
                    scrollable: true,
                    html: [
                        '<img height=260 src="http://staging.sencha.com/img/sencha.png" />',
                        '<h1>Welcome to Sencha Touch</h1>',
                        "<p>Building the Getting Started app</p>",
                        '<h2>Sencha Touch (2.0.0)</h2>'
                    ].join("")
                },


                {
                    xtype: 'list',
                    title: 'Events',
                    iconCls: 'star',
                    itemTpl: '{id}',                     
                    store: mystore                    
                }


            ]
        });
    }
});

XML は、この app.js ファイルと同じ場所にあります。サーバーをインストールしていないことに注意してください。app.js に変更を加えて、Chrome ブラウザで「index.html」を開きます。

ここに XML があります。これは、Sencha Docs で提供されているものと同じです。

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

変更後の私のコードは次のとおりです-

Ext.Loader.setPath({
    'Ext': 'lib/touch/src'
});


Ext.regModel('Personal', {
    fields  : [
        'id',
            {name: 'name',  type: 'string'}, 
            {name: 'email', type: 'string'}
    ]
});


Ext.application({
    name: 'Sencha',

    launch: function() {
        //The whole app UI lives in this tab panel
        Ext.Viewport.add({
            xtype: 'tabpanel',
            fullscreen: true,
            tabBarPosition: 'bottom',   
            items: [
                // This is the home page, just some simple html                                                

            {
                xtype   : 'selectfield',
                name    : 'user',
                label   : 'Users',
                store   : new Ext.data.Store({
                            model       : 'Personal',
                            autoLoad    : true,
                            proxy       : {
                                type    : 'ajax',
                                url     : 'userData.xml',
                                reader  : {
                                    type    : 'xml',
                                    root    : 'users'
                                }
                            }
                        }),
                valueField  : 'name',
                displayField    : 'name'
            }


            ]
        });
    }
});
4

2 に答える 2

0

Web サーバー (easyphp または wamp) (Linux および MacOS では xamp) を使用し、アプリにアクセスして localhost/yourAppDirectory をスローするだけで、すべて問題ありません。

于 2012-12-03T20:33:04.493 に答える
0

ちょっと@GordanWebbは、XMLファイルからのショーデータに対してこれを試してください.

Ext.regModel('Personal', {
    fields  : [
        'id',
            {name: 'name',  type: 'string'}, 
            {name: 'email', type: 'string'}
    ]
}), {
        scroll  : 'vertical',
        items   : [
            {
                xtype   : 'selectfield',
                name    : 'user',
                label   : 'Users',
                store   : new Ext.data.Store({
                            model       : 'Personal',
                            autoLoad    : true,
                            proxy       : {
                                type    : 'ajax',
                                url     : 'userData.xml',
                                reader  : {
                                    type    : 'xml',
                                    root    : 'users'
                                }
                            }
                        }),
                valueField  : 'name',
                displayField    : 'name',
            }
        ]
    }

この例では、selectfieldエレメント Sencha のデータを示しています。これが役立つことを願っています。:)

于 2012-06-16T15:51:40.670 に答える