Soap 串到Sencha Touch 2的一家商店

Soap 串到Sencha Touch 2的一家商店,soap,xml-parsing,sencha-touch-2,Soap,Xml Parsing,Sencha Touch 2,我正在使用XML接收来自SOAP web服务的响应。我将所有需要的数据解析为字符串 [{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中?最好的方法是什么 首

我正在使用XML接收来自SOAP web服务的响应。我将所有需要的数据解析为字符串

[{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中?最好的方法是什么

首先,您应该将数据解析为有效的JSON字符串,例如:
{data:[your data here]}
,如果您能够做到这一点,那么还押任务非常简单,包括两个步骤:

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

我已经使用了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();
如果使用此过程,则在调用load方法时,它会自动将数据拉入存储。或者你可以设置自动加载

如果您的设备上已经有数据,并且对如何获取数据感到满意。然后,您可以创建模型的新实例,并用您的值填充它。然后你会把它保存到你的商店里

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

store.add(instance);

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

谢谢您的帮助!代码的最后一次平静对我的问题很有吸引力。我不知道我们可以在Sencha Touch上这样做。谢谢你的回答,但我要去@Martin;DI尝试了您的方法,当在第一个“{”之后有内容时,Ext.decode似乎不接受Json字符串。使用您的示例,如果我有“{data:[…”,它返回的是一个错误的Json字符串。