1

I'm using Slickgrid and I would like to change behavior of editor. Instead of copy&paste I tried to overload one of functions but it doesn't work. I cannot read loadValue function.

loadValue is defined as (some code omitted)

    IntegerCellEditor : function(args) {
        this.loadValue = function(item) {
            defaultValue = item[args.column.field];
            $input.val(defaultValue);
            $input[0].defaultValue = defaultValue;
            $input.select();
        };
    }

What I tried is:

    function tristateIntegerCellEditor(check_field) { 
        var f = IntegerCellEditor;
        var f_loadValue = f.loadValue;

        f.loadValue = function(item) {
            f_loadValue(item);

            if (check_field) {
                if (!item[check_field]) {
                    $select.disable();
                }
            }
        };

        return f;
    }

Is there any way to substitute my function?

VividD
  • 10,456
  • 6
  • 64
  • 111
pma_
  • 810
  • 1
  • 8
  • 9

1 Answers1

2

You need f_loadValue.call(this, item);

Otherwise the old loadValue get's called with it's context (this) as window (the default).

Related:

Community
  • 1
  • 1
Raynos
  • 166,823
  • 56
  • 351
  • 396