我正在使用Slickgrid,并且我想更改编辑器的行为。我尝试重载其中一个功能,而不是复制粘贴,但是它不起作用。我无法读取loadValue函数。

loadValue定义为(省略了一些代码)

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


我试过的是:

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


有什么办法可以代替我的职能吗?

最佳答案

您需要f_loadValue.call(this, item);

否则,将调用旧的loadValue get及其上下文(this)作为window(默认值)。

有关:


Adding hooks
_.wrap

关于javascript - 如何重载JavaScript函数? (更改Slickgrid的编辑器),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6775102/

10-12 15:56