2012-04-12 22 views
0

我使用Javascript SOAP Client从XML中的SOAP Web服务接收到响应。我把它想要的所有数据解析为一个字符串。在Sencha Touch 2中存储的字符串

[{ZNA_COD:'111',ZNA_DESIG:'Blabla'},{ZNA_COD:'11',ZNA_DESIG:'Blabla'},{ZNA_COD:'1',ZNA_DESIG:'Blabla'},{ZNA_COD:'2',ZNA_DESIG:'Blabla'},{ZNA_COD:'11111',ZNA_DESIG:'Blabla'}] 

如何将它存储在Sencha Touch 2中?什么是最好的方法?

回答

1

我已经使用了ST1.1并且只是刚刚在ST2上开始。

我想这取决于你想要做什么。如果您的数据始终是从实时来源提取的,则可以使用Ext.data.Store并定义一个阅读器。在你的情况下,它会有一种类型的XML。

Ext.define('ZNA', { 
    extend: 'Ext.data.Model', 

    config: { 
     fields: [ 
      {name: 'ZNA_COD', type: 'string'}, 
      {name: 'ZNA_DESIG', type: 'string'} 
     ] 
    }, 
}); 

var store = Ext.create('Ext.data.Store', { 
    model: 'ZNA', 
    proxy: { 
     type: 'ajax', 
     url : 'www.your-service-url.com', 
     reader: { 
      type: 'xml', 
      record: 'ZNA' 
     } 
    } 
}); 
store.load(); 

如果您使用此过程,当您调用加载方法时,它会自动将数据拉入您的商店。或者你可以设置autoLoad。

如果您的数据已经存在于您的设备上,并且很满意您的设置。然后你可以创建一个新的模型实例并用你的值填充它。然后你将它保存到你的商店。

var instance = Ext.create('ZNA', { 
    ZNA_COD:'111', 
    ZNA_DESIG:'Blabla' 
}); 

store.add(instance); 

您可能需要检查语法,我可能会有一些ST1.1的东西在那里浮动。

+0

感谢您的帮助!代码的最后一次和平工作就像是我的问题的魅力。不知道我们可以在Sencha Touch上做到这一点。 – 2012-04-13 08:30:05

0

首先你应该分析你的数据到有效的JSON字符串,对于如:{data: [your data here]}前提是你能做到这一点,那么其剩余的任务是包含2个步骤很简单:

  • 使用Ext.decode到您的字符串解析到一个JSON对象
  • 然后result.data现在是你的结果阵列。遍历它们并将它们添加到Ext.data.Store非常简单,因为我认为这里不需要写下来,不是吗?
+0

感谢您的回答,但我要从@Martin提供一个D – 2012-04-13 08:32:30

+0

我试过了你的方式,并且Ext.decode在第一个“{”之后有东西时似乎不接受Json字符串。使用你的例子,如果我有“{数据:[...”它返回这是一个糟糕的JSON字符串。 – 2012-04-13 10:23:42