2015-01-22 2 views
0

Я новичок в ExtJs, я хочу перезаписать html-содержимое Div id "infraTab" с новым результатом запроса Ajax.Как заменить содержимое div новым результатом ajax в ExtJs?

Справка была бы принята с благодарностью. Спасибо заранее. Ниже приведен код, который я делаю до сих пор.

Ext.define('testview', { 
    layout : { 
        type: 'border', 
        padding: 5 
       }, 
    extend : 'Ext.Panel', 
    alias : 'widget.infraTab', 
    id  : 'infraTab', 
    margin : '10 10 10 10', 
    border : true, 
    items : Ext.create('Ext.view.View', { 
        store: store, 
        tpl:resultTemplate, 
        itemSelector: 'div.list-item', 
        listeners: { 
         itemclick: function(view, record, item, index, e, eOpts) { 
          getsublevels("abc"); 
         } 
        } 
      }) 
}); 

Приведенный выше код отображает данные, а также новая функция Ajax вызова

var getsublevels = function(value){ 

         var sublvlStore = Ext.create('Ext.data.Store', { 
               model : 'LevelModel', 
               autoLoad : true, 
                proxy : { 
                  type : 'ajax', 
                  url : 'Url', 
                 method :'GET', 
                 extraParams: { 
                  test: test 
                 }, 
                 reader : { 
                    type : 'json', 
                    root : 'data', 
                  totalProperty : 'total', 
                  successProperty: 'success' 
                 } 
                } 
              }); 
         sublvlStore.load(); 
         Ext.define('testview', { 
          layout : { 
              type: 'border', 
              padding: 5 
             }, 
          extend : 'Ext.Panel', 
          alias : 'widget.infraTab', 
          id  : 'infraTab', 
          margin : '10 10 10 10', 
          border : true, 
          renderTo: "infraTab", 
          items : Ext.create('Ext.view.View', { 
              store: sublvlStore, 
              tpl:resultTemplate, 
              itemSelector: 'div.list-item', 
              listeners: { 
               itemclick: function(view, record, item, index, e, eOpts) { 
                getsublevels(record.get('value')); 
               } 
              } 
            }) 
         }); 
}; 

Я попытался renderTo, но не повезло.

+0

Я не совсем понимаю, что вы пытаетесь достичь здесь, вам не нужно переопределять testview для начала. Не могли бы вы дать объяснение того, что вы пытаетесь добиться, и образец ajax-ответа будет полезен для диагностики проблемы. – Scriptable

+0

Первый блок отображает мой результат. Теперь, когда я нажимаю на любой элемент из него, я делаю новый вызов, и этот результат должен быть заменен исходным контентом. – webCoder

+0

просто перезагрузите оригинальный магазин, при необходимости загрузите с помощью различных параметров. загрузит новые данные и заменит вид списка типов новым контентом – Scriptable

ответ

0

Для этого вам не нужно заменять все содержимое страницы, вид списка, который у вас есть, привязан к данным в магазине. Вы можете обновлять/изменять/перезагружать или полностью заменять данные в хранилище, и результаты будут отображаться на экране.

попробовать что-то подобное в вашем верхнем блоке

items : Ext.create('Ext.view.View', { 
    store: store, 
    tpl:resultTemplate, 
    itemSelector: 'div.list-item', 
    listeners: { 
     itemclick: function(view, record, item, index, e, eOpts) { 
      store.reload({ 
       params: { 
        parentValue: record.get('value') 
       }, 
       url: '/new_url.php' 
      }); 
     } 
    } 
}) 

кода В приведенном выше примере при выборе элемента в списке, он будет посылать АЯКС запрос на сервер трейлерах параметр, содержащий родительский список значение, на которое ваша внутренняя служба должна соответствовать другим данным, чем первый запрос.

+0

Фактический URL-адрес ajax не совпадает. Таким образом, если я перезагружу его, он будет правильно использовать предыдущий URL-адрес? – webCoder

+0

такой же тип данных/формат возвращен? – Scriptable

+0

Да, он возвращает тот же формат, но данные будут разными. У меня есть что-то вроде древовидной структуры. Foldar1, Folder2, Folder3, которые отображаются на странице. Если я нажму на Folder1, я создаю новый адрес URL-адреса ajax, чтобы получить подуровень, который вернет Foldar1.1, Folder1.2, Folder1.3, как это. Но я хочу показать его на одной странице, заменив старый контент. – webCoder