簡體   English   中英

Sencha Touch XML列表

[英]Sencha Touch XML List

嗨,我有一個關於Sencha Touch的XML列表的問題。

我在Sencha Touch中加載了一些XML,我想將它們顯示為列表:

這是我的代碼:Sencha:

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

var navi = new Ext.data.Store({
    autoLoad:true,
    model: 'navModel',
    method: 'POST',
    proxy: {
    type: 'ajax',
    url : 'navi.xml',
    reader: {
    type : 'xml',
root: 'menu',
record:'navigation'
 }
}  
});
   var something = new Ext.List({
        store: 'navi',
        title: 'asdfasdf',
        emptyText: 'No data',
        fulscreen: true,
        itemTpl: '{id} - {title}'
    });


       var rootPanel = new Ext.TabPanel({
            fullscreen:true,
            items:[something]
        }); 

    }

});

XML:

    <?xml version="1.0" encoding="UTF-8"?>
    <menu>
    <navigation>
    <id>1</id>
    <title>Hello</title>
    </navigation>
    <navigation>
    <id>2</id>
    <title>Test</title>
    </navigation>
   </menu>

我可以讀取XML,但無法在列表中顯示它。

感謝答案

嘗試將TabPanel更改為Container,這可能會對您有所幫助!

您必須寫出不帶引號的商店名稱。

對於所有在地圖方面遇到問題的人...

您必須在sencha-touch.js的末尾添加以下解決方法:

Ext.override( Ext.data.XmlReader, {
    createAccessor: function() {
        var selectValue = function(key, root, defaultValue){
            if( key == '#' ){
                return root.tagName;
            }
            if( key.indexOf( '@' ) != -1 ){
                var property = key.split( '@' )[ 1 ];
                key = key.split( '@' )[ 0 ];
            }
            var val;
            if( key.length ){
                var node = Ext.DomQuery.selectNode(key, root);
                if( node && node.firstChild ){
                    node = node.firstChild;
                }
            }
            else{
                var node = root;
            }
            if(node){
                if( typeof( node.getAttribute ) != 'undefined' && typeof( property ) != 'undefined' ){
                    val = node.getAttribute( property );
                }
                else{
                    val = node.nodeValue;
                }
            }
            return Ext.isEmpty(val) ? defaultValue : val;
        };

        return function(key) {
            var fn;

            if (key == this.totalProperty) {
                fn = function(root, defaultValue) {
                    var value = selectValue(key, root, defaultValue);
                    return parseFloat(value);
                };
            }

            else if (key == this.successProperty) {
                fn = function(root, defaultValue) {
                    var value = selectValue(key, root, true);
                    return (value !== false && value !== 'false');
                };
            }

            else {
                fn = function(root, defaultValue) {
                    return selectValue(key, root, defaultValue);
                };
            }

            return fn;
        };
    }(),
});

因此您可以使用“ @attributename”訪問xml的屬性

如果您想訪問子屬性,請輸入“ childname @ attributename”

我希望我能幫助您..為此花了幾個小時..;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM