2

私は ExtJS を初めて使用し、いじっています。以下に示すように、サーバーから次の JSON を受信して​​います。

{"tid":1,"action":"HelloWorld","method":"getData",
  "result": {"InstId":"1",
    "value":  [
  {"country.stateId":"101", "country.stateName":"TA"},
  {"country.stateId":"102", "country.stateName":"ABC"}, 
  {"country.stateId":"103", "country.stateName":"DEF"}]}",
                  "type":"rpc"}

上記の JSON から値を抽出し、コンボボックスに入力する必要があります。この作業を行うには、カスタム リーダーを作成して、コンボボックスを読み取って入力する必要があります。カスタムリーダーを書くのを手伝ってくれる人はいますか?

以下は、さまざまなスニペットです

Ext.define('AM.store.TestStore', {

  extend: 'Ext.data.Store',

  alias : 'widget.testStore',
  model: 'AM.model.TestModel',
  autoload:true,
  proxy: {
      type: 'direct',

      directFn: HelloWorld.getData,
      extraParams:[ {'InstId': '1', 'boxid':'id'},
                    {'InstId': '1', 'name':'states'}
   ],

   reader:{
         type:'json',
         root:'result'

  }
  });

以下はビューオブジェクトです

Ext.define('AM.view.combobox.TestView' ,{
    extend: 'Ext.form.ComboBox',
    alias : 'widget.TestView',
    fieldLabel: 'States',
    store:'TestStore',
    renderTo: Ext.getBody(),
    displayField: 'country.stateName',
    valueField: 'country.stateId',
    autoselect:false

});

以下は私のモデルオブジェクトです

Ext.define('AM.model.TestModel', {
    extend: 'Ext.data.Model',

    alias : 'widget.TestModel',
    fields: [ {name: 'country.stateId'}, {name: 'country.stateName'}]
);

以下は私のコントローラーです

Ext.define('AM.controller.Funds', {
     extend: 'Ext.app.Controller',
     alias : 'widget.FundsController',
     views: ['combobox.TestView'],
     stores: ['TestStore'],
     models:['TestModel']
);

カスタム JSON リーダーの作成を手伝ってくれる人はいますか?

ありがとう
ファニ・クマール

4

1 に答える 1

2

そのためのカスタムリーダーを作成する必要はありません。コードにいくつかの小さな変更を加えるだけで十分だと思います。

まず、プロキシ定義で:

root: 'value'
useSimpleAccessors: true

次に、データのモデルで:

fields: [{
    name: 'id', mapping: 'country.stateId' }, {
    name: 'name', mapping: 'country.stateName' 
}]

それはそれを行う必要があります。

于 2012-05-15T10:33:18.043 に答える