2012-02-19 2 views
0

Я новичок в ExtJS 4 и пытаюсь реализовать простое приложение в стиле MVC. Документация действительно хороша, и это одна из тем, затронутых в руководстве по пакету форм, но, похоже, это не работает в моем случае.ExtJS 4 MVC Application: Form undefined error

Приложение в основном может создавать, редактировать и удалять статьи. Создание и редактирование находятся во всплывающих окнах. Всплывающее окно содержит форму с текстовым полем и html-редактором. Пожалуйста, нажмите на ссылку ниже, это ошибка в Google Chrome консоли, когда я нажимаю на кнопку отправки в «окно»

http://www.freeimagehosting.net/mjig7

Вот код, который я написал Model:

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

Вид:

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

и, наконец, код в мой контроллер, который делает окно VI sible

Контроллер:

..... 

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

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

Пожалуйста, мне точку в правильном направлении, в случае, если я делаю что-то неправильно. Спасибо заранее.

ответ

0

Проверьте документы getRecord():

Возвращает последний экземпляр Ext.data.Model, который был загружен с помощью loadRecord

так ясно, что вы не загружать любой записи, так что вы getRecord() возвращает undefined. И вы получаете свою ошибку дальше.

+0

Yup, я понял. Теперь я создаю новую запись, используя Ext.create.Record, и загружаю ее в форму перед назначением ей значений. спасибо за усилие. –

Смежные вопросы