2012-04-12 63 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