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

Schreibe einen Kommentar