2017-02-19 11 views
0

私は、このJSONデータ構造をどのように扱うかについて誰かが私に案内してくれることを願っています。ここでExtJS 6 Rest ProxyここでJSONデータオブジェクトはIDです

がその例です。(私はこのデータのゼロコントロールを持っている)

{ 
    "1": { 
     "name": "thing 01", 
     "attributes": { 
      "color": "red", 
      "brand": "ACME" 
     } 
    }, 
    "2": { 
     "name": "thing 02", 
     "attributes": { 
      "color": "blue", 
      "brand": "ACME" 
     } 
    } 
} 

だから私はreader

Ext.define('MyApp.model.Thing', { 
    extend: 'Ext.data.Model' 

    fields: [ 
     { name: 'name' }, 
     { name: 'attributes', type: 'auto' } 
    ], 

    proxy: { 
     type: 'rest', 
     url: 'http://example.com/api/things', 

     reader: { 
      type: 'json', 
      rootProperty: ??? // <--- How should this work? 
     } 
    } 
}); 

を使用してレコードを取得する方法について困惑している私はしました次のようなことをする方法があるかどうか疑問に思った。

rootProperty: '[id]' 

また、 IDはデータオブジェクトの場合はIDですか?おそらくモデルにidPropertyの設定を使用していますか?

reader.formatメソッドを使用する必要がありますか?それは少し総体に見えるだろう...

すべてのアイデアが評価されます。ありがとう!

+0

'rootProperty' configは、各レコードではなく、すべてのデータのルートを設定するためのものです。また、私はExtJS 6 [documentation](http://docs.sencha.com/extjs/6.2.0/)に 'reader.format'メソッドが見つかりませんでした。 – MarthyM

答えて

2

あなたのEXACTに関する質問はすでにhereです。

カスタムリーダーを実装し、getResponseDataメソッドをオーバーライドする必要があります。

Ext.define('MyReader', { 
    extend: 'Ext.data.reader.Json', 
    alias: 'reader.myreader', 

    getResponseData: function(response) { 
     var data = this.callParent([response]); 

     //do stuff here 

     return data; 
    } 
}); 
+0

ありがとう!どういうわけか私はSenchaのフォーラムでそれを見つけたことはありません。これは束を助ける! – Trozdol

5

カスタムリーダークラスを書く:

Ext.define('MyReader', { 
    extend: 'Ext.data.reader.Json', 
    alias: 'reader.myreader', 

    config: { 
     transform: function (data) { 
      var ret = [], 
       key, o; 

      for (key in data) { 
       o = data[key]; 
       o.id = key; 
       ret.push(o); 
      } 

      return ret; 
     } 
    } 
}); 

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

    fields: ['name', 'attribute'], 

    proxy: { 
     type: 'ajax', 
     url: 'data1.json', 

     reader: { 
      type: 'myreader' 
     } 
    } 
}); 

fiddle

関連する問題