2012-10-03 2 views
0

Я пытаюсь динамически построить форму extjs, и когда я пытаюсь добавить динамически построенный объект MixedCollection в форму, я получаю ТипError: e.mixins.elementCt не определено Ошибка.Ошибка добавления компонента MixedCollection в форму extjs

<div id="[email protected]" class="grid-container even"></div> 
<script> 

    Ext.define('HeaderForm', { 
     extend: 'Ext.form.Panel', 
     initComponent: function() { 
      var me = this; 
      Ext.applyIf(me, { 
       id: Ext.id(), 
       defaultType: 'textfield', 
       items: [{ 
        xtype: 'container', 
        items: [{ 
         xtype: 'textfield', 
         fieldLabel: 'Test' 
        }] 
       }] 
      }); 
      me.callParent(arguments); 
     } 
    }); 

    // Define our data model 
    Ext.define('HeaderModel', { 
     extend: 'Ext.data.Model', 
     fields: [ 
      { name: 'FieldA', type: 'int' } 
     ] 
    }); 

    var store = Ext.create('Ext.data.Store', { 
     model: 'HeaderModel', 
     proxy: { 
      type: 'ajax', 
      actionMethods: { create: 'POST', read: 'GET', update: 'POST', destroy: 'POST' }, 
      url: '@Url.Content("~/Test/Header")', 
      timeout: 1200000, 
     listeners: { 
      load: function() { 
      } 
     } 
     } 
    }); 

    store.load({ 
     scope: this, 
     callback: function (records, operation, success) { 
       var form = new HeaderForm(); 
       var formItems = new Ext.util.MixedCollection(); 
       Ext.each(records[0].fields.items, function (item) { 
        console.log(item); 
        formItems.add(new Ext.form.DisplayField({ 
         fieldLabel: 'Test' 
        })); 
       }, this); 
       console.log(formItems); 
       form.add(formItems); 
       form.loadRecord(records[0].data); 
       form.render('[email protected]'); 
     } 
    }); 
</script> 

Другое дело, что я не понимаю, когда я помещаю функцию внутри слушателя загрузки, ничего не происходит. Поэтому мне пришлось прибегнуть к использованию события обратного вызова.

Обновление: form.add метод принимает массив компонентов или компонентов, так что вместо добавления типа MixedCollection Я имею в formItems.items, чтобы добавить массив displayfields компонентов.

Но по какой-то причине загрузка загрузчика магазина не запускается, когда выполняется store.load, может ли кто-нибудь увидеть проблему с этим? Никогда не думайте об этом ... Я понял ... Я поставил слушателя вместо прокси вместо магазина.

Q2

также что-то странное в том, что во время выполнения метода обратного вызова store.load, записи не возвращаются с загруженными значениями. Не обращайте внимания на это ... Я понял ... Это был объект json, который я передал. Забыл взять его из структуры ошибок/данных для формы.

Благодаря

ответ

1

MixedCollection не является общепринятым параметром для добавления, вы должны использовать массив. Эта информация находится в документах.

+0

Спасибо @Evan Я исправил, ссылаясь на formItems.items –

Смежные вопросы