在init之外调用“this”

时间:2014-01-21 15:11:38

标签: javascript jquery slickgrid

我收到此消息

  

未捕获的TypeError:无法调用未定义的方法'getIdxById'

当我尝试在init之外的var函数中执行var idx = this.dataview.getIdxById(dataContext.id);时。我该如何访问?这只是基本的骨架(customFormatter是列定义的一部分):

function($) {
    /**
     * @class test.test.testing
    */

    /** @Static */
    {
        defaults : {
    columns: [{id: "hello",
                       name: "hello",
                       field: "hello",
                       width: 150,
                       sortable: true,
                       formatter: customFormatter},],
        }
    },
    /** @Prototype */
    {   
    init : function() {
            this._super(); //the grid
        }
    });
});

var customFormatter = function (row, cell, value, columnDef, dataContext) {
    var idx = this.dataview.getIdxById(dataContext.id);
};

1 个答案:

答案 0 :(得分:0)

您没有提供足够的详细信息,但我的猜测是此变量未设置为您想要的值。显然现在这是不确定的。尝试将代码更改为以下内容:

var customFormatter = function (me, row, cell, value, columnDef, dataContext) {
    var idx = me.dataview.getIdxById(dataContext.id);
};
// adding argument for this, and then call:
customFormatter(this, row, cell, value, columnDef, dataContext);