2014-01-21 1 views
-1

Я получаю это сообщениевызова «это» за пределами INIT

Uncaught TypeError: Cannot call method 'getIdxById' of undefined

Когда я пытаюсь сделать 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); 
}; 
+0

Umm, мы должны угадать, в какой области вызывается функция 'customFormatter', или даже в какой области она должна быть вызвана? Использование 'apply()' или 'call()' для установки правильной области видимости, вероятно, является ответом, но кто знает, где? – adeneo

+0

Формат. Объясните. – marekful

+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); 
+0

Маловероятно, что 'this' не определено, но' this.dataview'. Я бы предположил в контексте 'customFormatter', что' this' относится к окну, а не к тому, что они ожидают. –

+0

Я только что отредактировал, чтобы показать вам, где customFormatter находится в –

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

  • Нет связанных вопросов^_^