Frage

Ich bin neu in ExtJs 4 und versuche, eine einfache Anwendung im MVC -Stil zu implementieren. Die Dokumentation ist wirklich gut und dies ist eines der Themen, die im Formular Paket -Leitfaden behandelt werden, aber es scheint in meinem Fall nicht zu funktionieren.

Die App kann im Grunde genommen Artikel erstellen, bearbeiten und löschen. Die Erstellung und Bearbeitung befinden sich in Pop-up-Fenstern. Das Popup-Fenster enthält ein Formular mit einem Textfeld und einem HTML-Editor. Bitte klicken Sie auf den folgenden Link. Dies ist der Fehler in der Google Chrome -Konsole, wenn ich im 'Fenster' auf die Schaltfläche Senden klicke.

http://www.freeimageHosting.net/mjig7

Hier ist der Code, den ich geschrieben habe:

Ext.define('AM.model.Article', {
    extend: 'Ext.data.Model',
    fields: ['name', 'data'],
    proxy: {
        type: 'rest',
        url: 'users/data',
        reader: {
            type: 'json',
            root: 'myJaxBean',
            successProperty: 'success'
        },
        writer: {
            type: 'json'
        }
    }
});

Aussicht:

Ext.define('AM.view.New', {
    extend: 'Ext.window.Window',
    alias : 'widget.new',
    title : 'New Article',
    autoShow: true,
    fieldDefaults: {
        labelAlign: 'top',
        msgTarget: 'side'
    },
    layout: 'fit',
    bodyStyle:'padding:5px 5px 0',
    width: '70%',
    height: '40%',
    initComponent: function() {
        this.items = [
            {
                xtype: 'form',
                anchor: '99%',
                items: [
                    {
                        xtype: 'textfield',
                        name : 'name',
                        fieldLabel: 'Article Name',
                        anchor: '99%'
                    },
                    {
                        xtype: 'htmleditor',
                        name : 'data',
                        fieldLabel: 'Article',
                        anchor: '99% -25'
                    }
                ],
                buttons: [
                {
                    text: 'Submit',
                    handler: function() {
                        var form = this.up('form').getForm(), // get the basic form
                            record = form.getRecord(); // get the underlying model instance
                        if (form.isValid()) { // make sure the form contains valid data before submitting
                            form.updateRecord(record); // update the record with the form data
                            record.save({ // save the record to the server
                                success: function(user) {
                                    Ext.Msg.alert('Success', 'User saved successfully.')
                                },
                                failure: function(user) {
                                    Ext.Msg.alert('Failure', 'Failed to save user.')
                                }
                            });
                        } else { // display error alert if the data is invalid
                            Ext.Msg.alert('Invalid Data', 'Please correct form errors.')
                        }
                    }
                },
                {
                    text: 'Cancel',
                    scope: this,
                    handler: this.close
                }
            ]
            }
        ],


        this.callParent(arguments);
    }
});

und schließlich der Code in meinem Controller, der das Fenster sichtbar macht

Regler:

.....

'viewport > panel > panel > tbar button[action=newarticle]' :{
                click: this.newArticle
            },
....

   newArticle: function(button){
        var view = Ext.widget('new');
    },

Bitte zeigen Sie mich in die richtige Richtung, falls ich etwas falsch mache. Danke im Voraus.

War es hilfreich?

Lösung

Überprüfen Sie die Dokumente GetRecord ():

Gibt die letzte ext.data.model -Instanz zurück, die über LoadRecord geladen wurde

Es ist also klar, dass Sie keinen Datensatz geladen haben, sodass Sie und definierte Rückschläge () zurückgeben. Und Sie erhalten Ihren Fehler weiter.

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