2012-04-24 6 views
1

特定のjsonファイルをリストビューにロードしようとしています。 senchaプロキシは "CurrencyName"と "Value"のキーペアを理解していないようです。私は、これらの2つの値を使用可能なデータに関連付ける方法については知らない。ここでキーでjsonを読む:sencha touch 2のext.storeの値

は、JSONです:

{ 
    "timestamp": 1335294053, 
    "base": "USD", 
    "rates": { 
     "AED": 3.6732, 
     "AFN": 48.32, 
     "ALL": 106.040001 
    } 
} 

私の店:

proxy: { 
    type: 'ajax', 
    url: 'http://localhost/CurrencyFX/latest.json', 
    reader: { 
     type: 'json', 
     rootProperty: 'rates' 
    } 
}, 

私のモデル:

Ext.define('CurrencyFX.model.Currency', { 
    extend: 'Ext.data.Model', 
    config: { 
     fields: [ 'name', 'value' ] 
    } 
}); 

答えて

4

あなたはこの仕事をするために、独自のJSONリーダーサブクラスを記述する必要がありますあなたが扱っているデータは配列ではないからです。

ありがたいことに、これはかなり簡単です。

Ext.define('Ext.data.reader.Custom', { 
    extend: 'Ext.data.reader.Json', 
    alias : 'reader.custom', 

    getRoot: function(data) { 
     if (this.rootAccessor) { 
      data = this.rootAccessor.call(this, data); 
     } 

     var values = [], 
      name; 

     for (name in data) { 
      values.push({ 
       name: name, 
       value: data[name] 
      }); 
     } 

     return values; 
    } 
}); 

次のストアの設定で動作します::読者typeは今カスタムある

var store = Ext.create('Ext.data.Store', { 
    fields: ['name', 'value'], 
    autoLoad: true, 
    proxy: { 
     type: 'ajax', 
     url: '0000.json', 
     reader: { 
      type: 'custom', 
      rootProperty: 'rates' 
     } 
    } 
}); 

お知らせここで仕事をしなければならないものです。

私はこのデータをローカルでテストしましたが、正常に動作していたようです。

+0

優秀!魅力的な作品!どうもありがとうございました ! – Disco

関連する問題