ExtJS 4: Laden von Daten in Formular-panel auf der Schöpfung. Die Veranstaltung, zu fangen?
Bin ich stecken mit Auffüllen Ext.form.Panel
mit den Daten in meinem MVC-Projekt. Im Controller möchte ich für das laden der Daten aus dem Shop in die form. Aber ich kann nicht auf basic-form über-form-panel.
Formularansicht
Ext.define('Example.view.webitem.Form', {
extend: 'Ext.form.Panel',
alias: 'widget.webitemform',
renderTo: 'webstructure-form',
items: [{
xtype: 'fieldset',
title: 'Metadata',
items: [{
xtype: 'displayfield',
name: 'id',
fieldLabel: 'ID'
},
{
xtype: 'textfield',
name: 'name',
fieldLabel: 'Name'
}]
}],
buttons: [{
text: 'Load',
action: 'loaditem'
}]
});
Controller
Ext.define('Example.controller.WebItemsForm', {
extend: 'Ext.app.Controller',
stores: ['WebItemsForm'],
models: ['WebItem'],
views: ['webitem.Form'],
init: function() {
//This does not work. Data aren't loaded in store
this.control({
'webitemform': {
render: this.loadItem
}
});
//This works, but isn't userfriendly
this.control({
'webitemform button[action=loaditem]': {
click: this.loadItem
}
});
},
loadItem: function() {
var form = this.getWebItemForm().getForm();
var data = this.getStore('WebItemsForm').getAt(0);
form.loadRecord(data);
}
});
Nach einem Klick auf Load
button sind die Daten korrekt geladen in form. Aber wenn ich versuchte, Sie zu fangen Ext.form.Panel render
Ereignis, Geschäft nicht Daten geladen.
Uncaught TypeError: Cannot read property 'data' of undefined.
Wenn ich das richtig verstanden, das verursacht wird, da der Ladevorgang ist asynchron? , Wie Sie zum laden von Daten auf render-Ereignis? Gibt es mehr geeignete Events?
InformationsquelleAutor kurochenko | 2011-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Afer das panel gerendert wird (
afterrender
event) prüfen Sie, ob store geladen wird doch (normalerweise wird es nicht werden, es sei denn, panel machen wurde aufgeschoben, weil es in einem inaktiven tab zum Beispiel). Wenn der test fehlschlägt bei der gleichen Veranstaltung hinzufügenload
Zuhörer in den laden, wird die push-Daten zurück zur Tafel, sobald es fertig ist.load
(nichtafterload
) Ereignis hat den trick.Richtig, es ist
load
. Ich werde nie verstehen, warum Siebeforeload
aber nichtafterload
.InformationsquelleAutor Mchl