Question

Je suis nouveau à ExtJS 4 et essaie de mettre en œuvre une application simple dans le style MVC. La documentation est vraiment bon et c'est l'un des sujets abordés dans le guide d'emballage de forme, mais il ne semble pas fonctionner dans mon cas.

L'application peut essentiellement créer, modifier et à la création de suppression de articles.Procédé et l'édition sont dans les fenêtres pop-up. La fenêtre pop-up contient un formulaire avec un champ de texte et éditeur HTML. S'il vous plaît cliquer sur le lien ci-dessous, c'est l'erreur dans la console Google Chrome lorsque je clique sur le bouton Soumettre dans la « fenêtre »

http://www.freeimagehosting.net/mjig7

Voici le code que j'ai écrit Modèle:

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'
        }
    }
});

Voir:

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);
    }
});

et enfin le code dans mon contrôleur qui rend visible la fenêtre

Contrôleur:

.....

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

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

S'il vous plaît me diriger dans la bonne direction dans le cas où je fais quelque chose de mal. Merci à l'avance.

Était-ce utile?

La solution

Consultez la documentation getRecord () :

Renvoie la dernière instance de Ext.data.Model qui a été chargé par loadRecord

il est donc clair que vous ne l'avez pas charger un enregistrement, ce rendement getRecord () non défini. Et vous obtenez encore plus votre erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top