Здравствуйте, пишу небольшой плагин для редактора imperavi и столкнулся с проблемой, а точнее ошибкой 'Uncaught TypeError: undefined is not a function', происходит она следующим образом, есть некая функция которая выводит список файлов в каталоге динамически, я отслеживаю событие клик по файлу и вставляю ссылку на файл в редактор, у редактора есть свой API который выполняет вставку html кода называется insertHtml(), вот как-раз к этому методу я достучаться никак не могу, выходит выше описанная ошибка. Помогите разобраться. Пробовал выводить в alert, без использования метода, событие отрабатывает.
собственно сам код
RedactorPlugins.filemanager = {
init: function()
{
this.buttonAdd('filemanager', 'Filemanager', this.showMyModal);
this.buttonAwesome('filemanager', 'fa-folder');
},
showMyModal: function(){
var callback = $.getJSON('/readdir.php', $.proxy(function(data)
{
var folders = {};
$.each(data, $.proxy(function(key, val) // формируем и храним список каталогов
{
if (typeof val.folder !== 'undefined')
{
folders[val.folder] = val.folder;
}
}, this));
if (!$.isEmptyObject(folders))
{
$('.redactorfolder').hide();
var onchangeFunc = function(e)
{
var dataF = $(e.target).val(); // при выборе селекта получаем значение пункта (название папки)
var readList = {}; // контейнер для хранения новых созданных объектов
var i = 0;
$('.redactorfolder').remove();
$.each(data, function(key, val) // перебираем ранее полученый список каталогов
{
if (typeof val.folder !== 'undefined' && val.folder == dataF) // если выбранный из селекта каталог соответствует каталогу из списка, то формируем элемент и добавляем его в DOM дерево
{
var list = '<div class="redactorfolder '+ val.folder +'"><span class="del_img">X</span><span class="redactor_clip_link" value="'+i+'"><a href="#">' + val.name + '</a></span></div>';
$('.otherFm').append(list);
readList[i] = list;
i++;
}
});
// далее я кликаю по ссылке файла и он должен вставить в редактор
$('.otherFm').find('.redactorfolder').on('click', '.redactor_clip_link', $.proxy(function(){
var v = $(this).attr('value');
$.each(readList, $.proxy(function(k, val) // val хранит в себе html код который должен вставляться
{
if (k == v) {
this.insertHtml(val); // здесь выходит ошибка 'Uncaught TypeError: undefined is not a function'
// пробовал через alert, без этого метода все отрабатывает
//как правильно обращаться к этому методу подскажите
}
}, this));
}, this));
};
var select = $('<select id="redactor_image_box_select">');
$.each( folders, function(k, v)
{
select.append( $('<option value="' + v + '">' + k + '</option>'));
});
$('.otherFm').append(select);
select.change(onchangeFunc);
}
this.selectionSave();
this.modalInit(RLANG.fm, this.opts.modal_fm, 500, callback);
}
};