/** A textfield for searching.
 *
 * */
Ext.define('devilry.extjshelpers.SearchField', {
    extend: 'Ext.form.field.Text',
    alias: 'widget.searchfield',
    fieldCls: 'widget-searchfield',

    config: {
        /**
         * @cfg
         * Delay before a search is performed in milliseconds. Defaults to 500.
         * The search is not performed if the user changes the input text before
         * ``searchdelay`` is over.
         */
        searchdelay: 500
    },

    constructor: function(config) {
        this.initConfig(config);
        this.callParent([config]);
        this.addEvents('emptyInput');
        this.addEvents('newSearchValue');
    },

    initComponent: function() {
        var me = this;
        Ext.apply(this, {
            listeners: {
                scope: this,
                specialKey: function(field, e) {
                    me.handleSpecialKey(e);
                },

                change: function(field, newValue, oldValue) {
                    me.handleChange(newValue);
                }
            }
        });
        this.callParent(arguments);
    },

    triggerSearch: function(value) {
        var currentValue = this.getValue();
        var noNewInput = value == currentValue;
        if(noNewInput) {
            this.fireEvent('newSearchValue', value);
        }
    },

    handleSpecialKey: function(e) {
        if(e.getKey() == e.ENTER) {
            this.fireEvent('newSearchValue', this.getValue());
        } else if(e.getKey() == e.ESC) {
            this.fireEvent('emptyInput');
        }
    },

    handleChange: function(newValue) {
        var me = this;
        if(Ext.String.trim(newValue) == "") {
            this.fireEvent('emptyInput');
        } else {
            Ext.Function.defer(function() {
                me.triggerSearch(newValue);
            }, this.searchdelay);
        }
    }
});

@@ -707,119 +707,17 @@
     
-var me = this;%0A        Ext.apply(this, %7B%0A            listeners: %7B%0A                scope: this,%0A                
+this.on('
 spec
@@ -714,33 +714,34 @@
 s.on('specialKey
-:
+',
  function(field,
@@ -754,34 +754,28 @@
             
-        me
+this
 .handleSpeci
@@ -780,32 +780,24 @@
 cialKey(e);%0A
-        
         %7D,%0A%0A
@@ -798,33 +798,41 @@
   %7D,
-%0A%0A                
+ this);%0A        this.on('
 change
-:
+',
  fun
@@ -878,26 +878,20 @@
         
-        me
+this
 .handleC
@@ -919,41 +919,15 @@
     
-        %7D%0A            %7D%0A        %7D
+%7D, this
 );%0A 

Add listeners instead of overwriting.