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 回答