Frage

Ich bin neu bei EXTJS und verwende vorerst EXTJS-4.1.Ich habe ein Grundformular, in das ich beim Laden der Seite Daten eingeben muss.die Server-URL gibt einen JSON zurück.

[{"countryid":1,"countrycode":"US","countryname":"United States"}]

mein Formularcode ist

Ext.require([
    'Ext.form.*'
    //'Ext.layout.container.Column',
    //'Ext.tab.Panel'
    //'*'
]);

Ext.onReady(function() {
    Ext.QuickTips.init();

    var bd = Ext.getBody();

    /*
     * ================  Simple form  =======================
     */
    bd.createChild({tag: 'h2', html: 'Form 1 - Very Simple'});

    var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';

Ext.define('app.formStore', {
extend: 'Ext.data.Model',
fields: [
   {name: 'countryid'},
   {name: 'countrycode'},
   {name: 'countryname'}
]
});

var myStore = Ext.create('Ext.data.Store', {
model: 'app.formStore',
proxy: {
    type: 'ajax',
    url : 'http://localhost/milestone_1/web/app_dev.php/md/country/show/1',
    reader:{ 
        type:'json'                     
    }
},
autoLoad:true,
    listeners: {
        load: function() {
            var form = Ext.getCmp('formJobSummary'); 
            form.loadRecord(myStore.data.first());
        }
    }
});


var testForm = Ext.create('Ext.form.Panel', {
                    width: 500,
                    renderTo: Ext.getBody(),
                    title: 'Country Form',
                    waitMsgTarget: true,
                    fieldDefaults: {
                        labelAlign: 'right',
                        labelWidth: 85,
                        msgTarget: 'side'
                    },
                    items: [{
                        xtype: 'fieldset',
                        items: [{
                                xtype:'textfield',
                                fieldLabel: 'ID',
                                name: 'countryid'
                            }, {
                                xtype:'textfield',
                                fieldLabel: 'CODE',
                                name: 'countrycode'
                            }, {
                                xtype:'textfield',
                                fieldLabel: 'COUNTRY',
                                name: 'countryname'
                        }]
                    }]

            });


    this.testForm.getForm().loadRecord(app.formStore);
});

Ich konnte denselben JSON in ein Raster einfügen.Kannst du mir bitte helfen...Ich habe viele Beispiele über das Internet bekommen und versucht, aber immer noch kein Glück.Das oben angegebene ist auch ein modifizierter Codeausschnitt, den ich beim Surfen erhalten habe.

War es hilfreich?

Lösung

load() die Funktion ist asynchron.Sie haben also das Richtige getan - einen Handler für das Ladeereignis erstellt und dort Logik eingefügt.Sie haben jedoch einige Fehler gemacht:

  1. Im Load-Handler haben Sie einige Parameter für die Funktion.Der erste Parameter wird gespeichert - Sie müssen also keine globale Variable verwenden.

  2. Sie brauchen nicht zu haben this.testForm.getForm().loadRecord(app.formStore); - weil es kein gültiger Befehl ist und Sie in diesem Moment keine Ahnung haben, ob Ihr Geschäft tatsächlich geladen ist oder nicht.Entfernen Sie es.Sie haben bereits loadRecords im Speicherhandler.

  3. Das Rendern von Formularen und das automatische Laden von Speichern sind zwei verschiedene Ereignisse, und Sie haben keine Kontrolle über deren Timing.Also würde ich empfehlen zu deaktivieren autoLoad für den Laden und manuell anrufen store.load() nachdem Sie wissen, dass das Formular fertig ist.

Andere Tipps

var form = Ext.getCmp('formJobSummary');console.log(form) wird wahrscheinlich generationstabelletagcode zurückgeben.Weisen Sie dem Formular einen Namen zu, um Sie loszuwerden.Oder noch besser ... generasacodicetagpre.

Nur wenige Dinge zu versuchen:

1) Wenn Sie Ihre Datei auf localhost suchen, setzen Sie Localhost nicht auf URL Nur schreiben

url: '/milestone_1/web/app_dev.php/md/country/show/1'

Was tun Ihre PHP-Datei?Könnten Sie den Code posten?

3) Platzieren Sie die Proxy-Konfiguration auf dem Modell nicht auf Lager.

4) Haben Sie versuchen, zu testen, ob der Speicher auf Ladung gelesen hat?mit einem console.log?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top