2017-08-30 5 views
0

2次元配列のすべての値を取得したいと思います。モデルの設定で何かしていると思います。どうやってやるの?ここでExt JS 6.5.2でJson 2次元配列を解析する方法は?

は、私の店のためのコードです:

Ext.define('Test.store.PathStore', { 
extend: 'Ext.data.Store', 
alias: 'store.PathStore', 
storeId:'PathStore', 
model : 'Test.model.PathModel', 
autoSync:true, 
proxy: { 
    type: 'ajax', 
    url:"url", 
    method:'GET', 
    reader: { 
     type: 'json', 
     rootProperty : '' 
    } 
} 
}); 

ここに私のモデルのコードです:

Ext.define('Test.model.PathModel', { 
extend: 'Ext.data.Model', 

fields: [ 
    {name:'CID', type:'auto'}, 
    {name:'NAME', type:'auto'}, 
    {name:'DEFAULT_NAME', type:'auto'}, 
    {name:'REPRESENTATIONS', type:'auto'} 
    ] 
}); 

ここに私のコントローラのためのコードです:ここで

onButtonClick: function (selModel, record, index, options) { 

    var pathStore = Ext.getStore('PathStore'); 
    pathStore.load({ 
     // Some params, 
     callback: function(records, success, response, options) { 
      if(success){ 
      var arr = Object.values(records[0].getData().DEFAULT_NAME); 
      console.log(records); 
      console.log(arr); 
      console.log(records[0].getData()); 
      //Something I Have To Do 
      } 
} 
scope: this 
}); 
} 

は用のフォーマットです私のJson:

[ 
 
    [ 
 
    { 
 
     "CID": 111111, 
 
     "NAME": null, 
 
     "DEFAULT_NAME": "Hello guys", 
 
     "REPRESENTATIONS": null, 
 
     "ALL_REPRESENTATIONS": [ 
 
     { 
 
      "cid": 111111, 
 
      "Name": "Hello", 
 
      "DefaultName": "guys", 
 
     } 
 
     ] 
 
    } 
 
    ], 
 
    [ 
 
    { 
 
     "CID": 2222222, 
 
     "NAME": null, 
 
     "DEFAULT_NAME": "Hello World", 
 
     "REPRESENTATIONS": null, 
 
     "ALL_REPRESENTATIONS": [ 
 
     { 
 
      "cid": 22222222, 
 
      "Name": "Hello", 
 
      "DefaultName": "World", 
 
     } 
 
     ] 
 
    } 
 
    ] 
 
]

Json Format

私は、[オブジェクトのオブジェクト]またはDEFAULT_NAMENAMECIDで何かを取得します。これをどうすればいいですか?

事前のおかげで、 ベン

+0

あなたがショーの上に与えたコードは、あなたのPathStoreポイントお使いのモデル名がTest.model.RepresentationあるとしてどこTest.model.PathModelをモデル化します。 – Shahbaz

+0

それ以外のフィールドDEFAULT_NAME、NAME、CIDがintまたは文字列データを返す場合は、すべてautoに対してではなくモデル内のそれぞれの型を設定する必要があります。 – Shahbaz

答えて

0

一つの方法ネストされた配列は、リーダーのtransform構成を使用することです。

生の(非直列化)データオブジェクトが渡されます。変換 関数は、元のデータオブジェクト の修正バージョンまたは完全に新しいデータオブジェクトであるデータオブジェクトを返します。

reader: { 
    type: 'json', 
    rootProperty: '', 
    transform: function(data) { 
     return Ext.Array.map(data, function(nestedDataArray) { 
      return nestedDataArray[0]; 
     }); 
    } 
} 

あなたは外側の列を取り除くとデータを正規化しますこの方法です。ここで

は作業フィドルです:https://fiddle.sencha.com/#view/editor&fiddle/25ut

+0

これはうまくいきます、ありがとうございます〜 –

0

あなたは、あなたのモデルに1対多relaitionを持っているモデルの設定で「hasManyの」プロパティを使用している場合:からデータを取得するための

Ext.define("Test.model.RepresentationModel", { 
    extend: 'Ext.data.Model', 
    fields: [ 
     'cid', 'Name', 'DefaultName' 
    ], 
    belongsTo: 'Test.model.PathModel' 
}); 

Ext.define('Test.model.PathModel', { 
    extend: 'Ext.data.Model', 

    fields: [ 
     {name:'CID', type:'auto'}, 
     {name:'NAME', type:'auto'}, 
     {name:'DEFAULT_NAME', type:'auto'}, 
     {name:'REPRESENTATIONS', type:'auto'} 
    ], 

    hasMany: {model: 'Test.model.RepresentationModel', name: 'ALL_REPRESENTATIONS'}, 
}); 
+0

どの部分が問題を解決していますか?詳しく教えてください。 – MarthyM

関連する問題