2016-09-07 1 views
0

Я переехал с ExtJs 4.1 на ExtJs 4.2, из-за ужасных неприятностей с filefield компонента. Основная проблема заключалась в том, что в ExtJs 4.1 файловое поле было очищено после каждого представления формы. В соответствии с этим thread, в ExtJs 4.2 они решили эту проблему, однако, я по-прежнему сталкиваюсь с той же проблемой в своем приложении, несмотря на то, что я установил clearOnSubmit в false. Я даже понял, что код вызывает целые проблемы:Filefield with clearOnSubmit false по-прежнему очищается

Ext.define('Ext.form.field.FileButton', { 
    ... 
createFileInput : function(isTemporary) { 
    var me = this; 
    //ATTENTION! 
    //before me.el.createChild is called 
    //me.fileInputEl contains initial filefield: 
    //<input id="filefield-2144-button-fileInputEl" class=" x-form-file-input" type="file" size="1" name="file_name" role=""> 
    me.fileInputEl = me.el.createChild({ 
     name: me.inputName, 
     id: !isTemporary ? me.id + '-fileInputEl' : undefined, 
     cls: me.inputCls, 
     tag: 'input', 
     type: 'file', 
     size: 1 
    }); 
    //ATTENTION! 
    //now initial fielfield is gone, even though we have set clearOnSubmit to false 
    me.fileInputEl.on('change', me.fireChange, me); 
    } 
... 

Эта библиотека метод вызывается в какой-то момент, когда форма передается на сервер и destroyes начальный элемент:

<input id="filefield-2144-button-fileInputEl" class=" x-form-file-input" type="file" size="1" name="file_name" role=""> 

и заменяет он с новым пустым:

<input name="file_name" id="ext-gen4414" class="x-form-file-input" type="file" size="1"> 

Итак, что не так с этим и как я могу исправить эту ошибку библиотеки.

ответ

2

Я протестировал его на 4.2.1. Его рабочий тон. Файловое поле не очищается после отправки.

Ext.application({ 
    name: 'Fiddle', 

    launch: function() { 
     Ext.create('Ext.form.Panel', { 
      title: 'Upload a Photo', 
      width: 400, 
      bodyPadding: 10, 
      frame: true, 
      renderTo: Ext.getBody(), 
      items: [{ 
       xtype: 'filefield', 
       name: 'photo', 
       fieldLabel: 'Photo', 
       labelWidth: 50, 
       msgTarget: 'side', 
       allowBlank: false, 
       anchor: '100%', 
       buttonText: 'Select Photo...', 
       clearOnSubmit: false 
      }], 

      buttons: [{ 
       text: 'Upload', 
       handler: function() { 
        var form = this.up('form').getForm(); 
        if (form.isValid()) { 
         form.submit({ 
          url: 'photo-upload.php', 
          waitMsg: 'Uploading your photo...', 
          success: function(fp, o) { 
           Ext.Msg.alert('Success', 'Your photo "' + o.result.file + '" has been uploaded.'); 
          } 
         }); 
        } 
       } 
      }] 
     }); 
    } 
}); 
+1

Скрипач для этого. https://fiddle.sencha.com/#fiddle/1gd2 – UDID

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