2012-10-03 5 views
0

동적으로 Extjs 양식을 작성하려고하는데 양식에 동적으로 빌드 된 MixedCollection 개체를 추가하려고하면 TypeError가 발생합니다. e.mixins.elementCt는 정의되지 않았습니다. 오류가 발생했습니다.Extjs 양식에 MixedCollection 구성 요소를 추가하는 중 오류가 발생했습니다.

<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 종류의 첨가는 I displayfields 구성 요소의 배열을 추가 formItems.items 참조.

그러나 store.load가 실행될 때 저장소 리스너로드가 트리거되지 않는 이유는 무엇입니까? 신경 쓰지 마라 ... 나는 알아 냈다 ... 나는 가게 대신에 프록시 대신에 청취자를 배치했다. 이상한

Q2 또한

뭔가 store.load의 콜백 메소드 동안, 레코드가로드 된 값으로 반환되지 않는다는 점이다. 신경 쓰지 마라. 나는 알아 냈다. 나는 지나가고있는 json 개체였다. 양식의 오류/데이터 구조에서 가져가는 것을 잊었습니다.

답변

1

MixedCollection은 추가에 대한 승인 매개 변수 아니다

감사합니다, 당신은 배열을 사용해야합니다. 이 정보는 문서에 있습니다.

+0

감사합니다. @Evan formItems.items를 참조하여 수정되었습니다. –

관련 문제