2011-10-06 67 views
1

我是Sencha Touch框架的新手。我尝试使用文档来制作演示应用程序。我正在尝试显示XML文件中的记录并以表格格式显示它。我无法理解我做错了什么。我在屏幕顶部和空白页面获取Dock。下面是我的代码Sencha Touch XML分析问题

Index.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 : '{id} {name}', 
     grouped : true, 
     indexBar: true, 

     store: store 
    }); 
    list.show(); 

    var panel = new Ext.Panel({ 
     fullscreen: true, 
     dockedItems:[ 
      { 
       dock: 'top', 
       xtype: 'toolbar', 
       title: 'Users' 
      } 
     ] 
    }); 
} 
}); 

users.xml中

<?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> 

请帮我...在此先感谢...

回答

1

第一所有的,你都需要熟悉如何逐步完成ST源代码和设置断点,以及如何查看conso在浏览器中输出。

试试这个:使用sencha-touch-debug.js代替sencha.js。然后,使用开发人员控制台在Ext.data.Store类构造方法中设置断点。下山不远的构造方法的底部,你会看到下面的代码:

} else if (this.autoLoad) { 
     Ext.defer(this.load, 10, this, [typeof this.autoLoad == 'object' ? this.autoLoad : undefined]); 
    } 

这是提示你,你需要设置自动加载的属性数据存储中的对象。

一旦你这样做了,你将能够看到数据存储的“加载”函数被调用。

请注意,如果您使用的是Chrome并试图在本地(而不是从Web服务器)加载HTML文件,您将遇到[this question]中描述的另一个问题。如果是这种情况,您将在您的JavaScript控制台中看到一个错误。

+0

嗨mmigdol .. 对不起,我忙于其他事情......我试过你的解决方案。 我包括自动加载。我将整个项目上传到网络服务器并在iOS模拟器上运行。 我得到另一个错误“TypeError:表达式结果'记录'[未定义]不是一个对象。” – Tyagi

+0

Ticking Autoload为我工作!我还必须将XML文件编码更改为encoding =“ISO-8859-1”才能使其正确读取并显示文件。 – user1203605