Ошибка получения Reader Undefined при загрузке данных JSON в комбинированный список в EXTJS - PullRequest
0 голосов
/ 28 июля 2011

У меня есть два раскрывающихся списка, при изменении значения одного раскрывающегося списка оно должно заполнять значение в другом раскрывающемся списке. Я делаю AJAX-вызов с использованием JSON, и я также получаю ответ. Но после получения ответа значения не загружаются в хранилище второго поля со списком. Получение ошибки: Читатель не определен Ниже мой код:

// Второе описание COMBO

  var AGENT_NAME_Field = Ext.create('Ext.form.field.ComboBox', {
    id: 'AGENT_NAME',
    name: 'AGENT_NAME',       
    width: 300,
    displayField: 'name',
    store: agentNameStore,
    queryMode: 'local',
    allowBlank: false,
    listConfig: {
        getInnerTpl: function() {
            return '<div data-qtip="{name}">{name}</div>';
        }
    }
}); 

// Сохранить для второго комбо

 var agentNameStore = Ext.create('Ext.data.Store', {
  proxy: {
    type: 'ajax',
    url : 'name.json',
    reader: new Ext.data.JsonReader({
        totalProperty: 'results',
        root:'items'
    }, [{name: 'name'}, {name: 'name'}])

}

}); 

// Вот как я делаю вызов ajax, а FUNCTION_NAME_Field является первым комбо

 FUNCTION_NAME_Field.on('select', function() {
    AGENT_NAME_Field.reset();
    agentNameStore.proxy= new Ext.data.HttpProxy({url: '/omsWeb/navigation/getAgent.htm?id='+FUNCTION_NAME_Field.getValue()});
    agentNameStore.load();
});

Я проследил журналы, получаю ответ как успешный, но после этого возникает ошибка: читатель не определен. Я что-то пропустил? Или что-то не так? Может ли кто-нибудь, пожалуйста, помогите. Спасибо Praveen

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Вы переопределяете свой прокси, не включая определение читателя. Не уверен, почему вы даже делаете это для начала - каждая комбинация должна уже иметь свой собственный предварительно сконфигурированный store + proxy + reader. Я не уверен, почему ты меняешь это на лету.

0 голосов
/ 28 июля 2011

Попробуйте это:

  1. удалить эту строку:

    agentNameStore.proxy= new Ext.data.HttpProxy({url: '/omsWeb/navigation/getAgent.htm?id='+FUNCTION_NAME_Field.getValue()});
    
  2. и замените значение URL в прокси вашего магазина:

    url: '/omsWeb/navigation/getAgent.htm?id='+ Ext.ComponentManager.get(ID).getValue()}
    

, где ID - это идентификатор FUNCTION_NAME_Field

Отредактировано:

Проверьте этот пример, который я создал для вас

Ext.onReady(function() {

  var ds = Ext.create('Ext.data.Store', {
      pageSize: 10,
      proxy: {
        type: 'jsonp',
        url : 'http://www.sencha.com/forum/topics-remote.php',
        reader: {
          type: 'json',
          root: 'topics',
          totalProperty: 'totalCount'
        }
      },

      fields: [
        {name: 'id', mapping: 'post_id'},
        {name: 'title', mapping: 'topic_title'},
        {name: 'topicId', mapping: 'topic_id'},
        {name: 'author', mapping: 'author'},
        {name: 'lastPost', mapping: 'post_time', type: 'date', dateFormat: 'timestamp'},
        {name: 'excerpt', mapping: 'post_text'}
      ]
  });

  var ds2 = Ext.create('Ext.data.Store', {
      pageSize: 10,
      fields: [
        {name: 'id', mapping: 'id'},
      ]
  });

  var cb1 = Ext.create('Ext.form.ComboBox', {
      id: 'cb1',
      fieldLabel: 'TEST',
      store: ds,
      displayField: 'title',
      valueField: 'id',
      multiSelect: false,
      renderTo: Ext.getBody()
  });

  var cb2 = Ext.create('Ext.form.ComboBox', {
      disabled : true,
      id: 'cb2',
      fieldLabel: 'TEST2',
      store: ds2,
      displayField: 'title',
      valueField: 'id',
      renderTo: Ext.getBody()
  });

  cb1.on('select', function(combo, value) {
      cb2.enable();       
      ds2.load();     
  });

  ds2.on('beforeload', function(store, operation) {
      alert(Ext.ComponentManager.get('cb1').getValue());
      this.setProxy(Ext.create('Ext.data.proxy.Ajax', {
            url : '/omsWeb/navigation/getAgent.htm',
            extraParams : {
                id: Ext.ComponentManager.get('cb1').getValue()
            }
          }));
  },ds2);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...