동적으로 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 개체였다. 양식의 오류/데이터 구조에서 가져가는 것을 잊었습니다.
감사합니다. @Evan formItems.items를 참조하여 수정되었습니다. –