2013-11-20 2 views
0

У меня есть этот DisplayField, который динамически загружается во время работы программы. Он загружает значение даты с помощью формата «Ymd» (без разделителей), я хочу изменить формат даты до «d.m.Y» после его загрузки.Ext JS DisplayField, как изменить динамически загруженное значение

Теперь у меня есть базовый класс DisplayField, и я расширяю его в своей программе. Я хочу отформатировать значение с событием в моем базовом классе. Мне удалось форматировать значение с помощью события изменения, но оно вызывает другое событие изменения, поэтому включается в цикл. Я использовал другую переменную счетчика, чтобы предотвратить цикл, но есть ли другой способ сделать это гораздо более чистым способом?

My Display Field:

Ext.define('MyDisplayField', { 
extend: 'Ext.form.DisplayField', 
enableDateFormat: false, 
dateFormat: GlobalConfigProperties.dateFormat, 
counter : 0, 
initComponent: function() { 
    var me = this; 

    Ext.applyIf(me, { 
     listeners: { 
      change: function(field, newValue, oldValue, eOpts) { 
       if(field.enableDateFormat && field.counter == 0) { 
        field.counter = 1; 
        var date = Ext.Date.parse(newValue, 'Ymd'); 
        field.setValue(Ext.Date.format(date, field.dateFormat)); 
       } 
      } 
     } 
    }); 
} 

});

ответ

0

Попробуйте использовать setRawValue, он должен обходить обнаружение изменений.

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